• Sábado 14 de Diciembre de 2024, 22:44

Autor Tema:  Problema parseo cadena de caracteres  (Leído 1171 veces)

Andrés_Ramone

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Problema parseo cadena de caracteres
« en: Miércoles 24 de Noviembre de 2010, 16:28 »
0
Hola  a todos, estoy con un problema tratando de armar una funcion que tome los datos de un archivo de texto y los procese.

Yo tengo un archivo de texto que tiene datos cada dato esta separado por comas (,) yo necesito leer la linea separa cada dato convertirlo y guardarlo, mi problema surge a partir del parseo cuando parseo las lineas y las muestro divididas por coma por pantalla me devuelve esto:

asi seria el achivo de texto:

-34.676, -58.32, Buenos Aires, 4000000, 45.45, 88.1
-33.13, -68.56, Mendoza, 112900, 47.20, 79.0

asi me devuelve por pantalla:

-34.676
 -58.32
 Buenos Aires
 4000000
 45.45
 88.1

-33.13
 -68.56
 Mendoza
 112900
 47.20
 79.0

-33.13

Osea me repite el primer dato de la ultima linea que leyo.

Aca les dejo el codigo

Desde ya Muchas Gracias


int main()
{
   char linea[255];
   char s2[3] = ",";
   char *ptr;
   FILE *f;
   char* check;

   /*printf( "linea=%sn", linea );*/

   f = fopen("datos.txt","r");

   do
   {

       check = fgets(linea, 255, f);

       ptr = strtok( linea, s2 );    

       printf( "%sn", ptr );

       while( (ptr = strtok( NULL, s2 )) != NULL )  
         printf( "%sn", ptr );

   } while ( check != NULL);

   return 0;
}

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema parseo cadena de caracteres
« Respuesta #1 en: Miércoles 24 de Noviembre de 2010, 17:33 »
0
Buenas

proba cambiar el bucle por esto:


Código: C
  1. while(fgets(linea, 255, f) != NULL)
  2. {
  3. ptr = strtok( linea, s2 );
  4.  
  5. printf( "%sn", ptr );
  6.  
  7. while( (ptr = strtok( NULL, s2 )) != NULL )
  8. printf( "%sn", ptr );
  9. }
  10.  
Saludos
The sweet smell of a great sorrow lies over the land.