Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/06/2014, 06:59
Avatar de guzzano
guzzano
 
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 9 meses
Puntos: 13
Respuesta: Duda problema sencillo de cadena de caracteres C

Buenos días.

Primero antes que todo, normalmente un compilador no debería dejarte compilar el main sin algún tipo de dato definido. (Creo que en C99 si lo permite, pero es muy mala práctica, aún así cuando el compilador sabe que ahí irá un int). El sistema operativo necesita que cada programa devuelva un código, en el POSIX se establece

Código C:
Ver original
  1. #define EXIT_SUCCESS    0
  2. #define EXIT_FAILURE    1

Como te dijeron acá arriba, el problema es que no estás incrementado la variable j.

Código C:
Ver original
  1. caracteres[j+1]= '\0';

Aunque evidentemente aquí la estás incrementado, no estás modificando su contenido, por consecuente, siempre será 0+1.

Otra cosa más, en el momento que tratas de imprimirla,

Código C:
Ver original
  1. largo=strlen(caracteres);
  2.      
  3.      for(int i=0;i<largo;i++)
  4.      {
  5.         printf("%s  ",caracteres);
  6.         }

Estás obteniendo el largo de ella, y luego ¿imprimiendo la variable completa por el tamaño de ésta?, ejemplo. Si colocas en la variable "Hola", te imprimirá "Hola" 4 veces. Si en caso lo que querías hacer era imprimir la variable por caracteres podías hacer

Código C:
Ver original
  1. for (i = 0; i < largo; i++)
  2.     {
  3.         printf("%c", caracteres[i]);
  4.     }    
  5.      
  6.     ó más simple.
  7.  
  8.     printf("%s", caracteres);

Te daré un ejemplo mío de tu código más simple.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main (void)
  5. {
  6.     char buffer[256] = {0};
  7.     unsigned int size;
  8.  
  9.     for (size = 0; size < sizeof (buffer); size++)
  10.     {
  11.         buffer[size] = getchar();
  12.        
  13.         if (buffer[size] == '.') break;
  14.     }
  15.  
  16.     printf("String: %.265s | Size: %d\n", buffer, size++);
  17.  
  18.     return EXIT_SUCCESS;
  19. }

¿Qué diferencia cuenta sobre tu código?, maneja más sencillo la recolección de caracteres y también evitas desbordamientos de buffers que hablé de él, en otro tema (http://www.forosdelweb.com/4499682-post2.html), no es el mismo caso, pero se entiende el objetivo.

Como último, el tema que te recomendé arriba, también hablé de la librería conio.h, échale un vistazo.

Un saludos.
__________________
Si me equivoco, corríjanme sin piedad.