Autor
|
Tema: Problema Al leer Archivo En C (Leído 6,391 veces)
|
ZedGe
Desconectado
Mensajes: 154
|
Tengo el siguiente codigo que lee un fichero, con datos separados por coma EJ: Juanito,Perez,15,Cancer,Si,5,Si,21.01.2012,Si Anita,Lava,1,Resfrio,No,5,Si,01.01.2011,No #include <stdlib.h> #include <stdio.h>
int cargarTXT() { FILE *fichero; char nombre[30];
system("cls");//Se borra la pantalla printf("\n\t\t%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176); printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176); printf("\n\t\t%c %c",176,176); printf("\n\t\t%c %c",176,176); printf("\n\t\t%c Ingrese Nombre Del Fichero A Cargar: %c",176,176); printf("\n\t\t%c %c",176,176); printf("\n\t\t%c %c",176,176); printf("\n\t\t%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176); printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176); printf("\n\n"); scanf("\t\t\t\t\t\t%s",nombre);
fichero = fopen(nombre,"r");
if (fichero == NULL){ printf("No Se Pudo Abrir El Fichero"); return 0; }
char *ptrToken; //Variable que permite guardar dato entre las comas int i=0; int j=0; char lineas[800]; char dato[8][8000];
while( !feof(fichero) ) //En caso de leerlo y hasta no llegar al final se ahce esto { fscanf( fichero, "%s",lineas); ptrToken = strtok(lineas, "," ); //Se re-lee la linea hasta encontrar una ',' y se guarda lo leido i=0; while ( ptrToken != NULL ) //Si lo leido hasta una , no es nulo o no hay nada { strcpy(dato[i],ptrToken); i++; //Se aumenta el auxiliar i ptrToken = strtok(NULL, "," ); //Se obtiene el siguiente token y se sigue en el while } } menu(); fclose(fichero); } El problema es que al imprimir los datos lee el ultimo dato de la ultima linea nuevamente, y no se por que.... con una linea funciona.. con 2 no
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Un error en el programa y, supongo, causa del comportamiento que mencionas es el uso de la función "feof". Salvo contados escenarios se debe evitar el uso de ella en favor del valor de retorno de la función utilizada. En tu caso fscanf retornara 1 mientras pueda leer una palabra y EOF en caso de error o fin de archivo. Cambia el bucle a: while (fscanf(fichero , "%s", lineas ) == 1){ ptrToken = strtok(lineas , "," ); i = 0; while (ptrToken != NULL){ i++; ptrToken = strtok(NULL , "," ); } }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
ok muchas gracias =D.....
otra pregunta hay alguna forma de leer el fichero y retornar la cantidad de lineas sin saber el max total de estas ni su largo??
es decir un fichero con 50 caracteres por linea 123 lineas retornara 123
ese mismo fichero pero con 10 caracteres y 123123123 lineas retorne 123123123
ya que como lei yo le asigne un max de 8000... lo que si tengo solo 10 lineas es un gasto de memoria
|
|
|
En línea
|
|
|
|
Xandrete
Desconectado
Mensajes: 210
|
ok muchas gracias =D.....
otra pregunta hay alguna forma de leer el fichero y retornar la cantidad de lineas sin saber el max total de estas ni su largo??
es decir un fichero con 50 caracteres por linea 123 lineas retornara 123
ese mismo fichero pero con 10 caracteres y 123123123 lineas retorne 123123123
ya que como lei yo le asigne un max de 8000... lo que si tengo solo 10 lineas es un gasto de memoria
Cuenta los saltos de línea ('\n') y súmale 1. Por ejemplo. Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema en C++ al leer archivo .txt
« 1 2 »
Programación C/C++
|
javier_SL
|
10
|
13,348
|
21 Junio 2011, 00:54 am
por Danyel_Casvill
|
|
|
Problema al leer archivo en Java
Java
|
thekill01
|
1
|
2,671
|
27 Mayo 2012, 03:02 am
por [Case]
|
|
|
Problema al leer un archivo binario en C
Programación C/C++
|
the_jocker
|
5
|
5,454
|
13 Agosto 2012, 01:37 am
por CSQCasimiro
|
|
|
problema con leer e interpretar txt
Programación C/C++
|
arthu16
|
3
|
2,717
|
12 Septiembre 2013, 18:50 pm
por eferion
|
|
|
problema al leer gauss desde un archivo
Programación C/C++
|
Idmus
|
1
|
2,034
|
14 Noviembre 2013, 19:36 pm
por Idmus
|
|