Foros del Web » Programación para mayores de 30 ;) » Programación General »

leer de un fichero (lenguaje C)

Estas en el tema de leer de un fichero (lenguaje C) en el foro de Programación General en Foros del Web. tengo un fichero tal q así: 101 GESTAN S.A.;MIRIAM BLASCO,_PARC. 136;47014;VALLADOLID;VALLADOLID;+34_983.340.583;;; 2015 SANIMON S.L.;CONCEPCION,_2;47003;VALLADOLID;VALLADOLID;+34 _983.341.589;;; 213;PASEO DE ZORRILLA,_13;47006;VALLADOLID;VALLADOLID;+34_983.2 20.921;;;025241 - ROPA Y ACCESORIOS2153 IMPORT-EXPORT S.L.;S. ...
  #1 (permalink)  
Antiguo 19/04/2004, 08:11
 
Fecha de Ingreso: abril-2004
Mensajes: 6
Antigüedad: 20 años, 1 mes
Puntos: 0
leer de un fichero (lenguaje C)

tengo un fichero tal q así:

101 GESTAN S.A.;MIRIAM BLASCO,_PARC. 136;47014;VALLADOLID;VALLADOLID;+34_983.340.583;;;
2015 SANIMON S.L.;CONCEPCION,_2;47003;VALLADOLID;VALLADOLID;+34 _983.341.589;;;
213;PASEO DE ZORRILLA,_13;47006;VALLADOLID;VALLADOLID;+34_983.2 20.921;;;025241 - ROPA Y ACCESORIOS2153 IMPORT-EXPORT S.L.;S. LUIS,_17;47004;VALLADOLID;VALLADOLID;+34_983.211.1 63;;;
29 KENYA S.L.;PL. STA. ANA,_2;47152;VALLADOLID;VALLADOLID;+34_983.339.622 ;;;
29 KENYA S.L.;PL. STA. ANA,_2;47152;VALLADOLID;VALLADOLID;+34_983.339.631 ;;;

llamado personas.txt y no consigo q al leerlo (con el típico fread) pues me separe las líneas correctamente, me saca todas seguidas. a alguien se le ocurre alguna solución?
thx.

P.D.: lo qeu tengo realizado es lo siguiente:
typedef struct{
char telefono[10];
char fax[10];
char movil[10];
}telefonos;
typedef struct
{
char nombre[100];
char direccion[100];
char codigo[6];
char ciudad[50];
char provincia[50];
telefonos telef;
char actividad[10];
}clientes;
clientes cl;
FILE *uno;
main()
{
if((uno=fopen("personas.txt","r"))==NULL)
printf(" ERROR");
else
{
printf ("por lo menos se abre\n");
while(!feof(uno))
{
fread(&cl,sizeof(clientes),1,uno);
printf(" %s",&cl);
getch();
}
}
fclose(uno);
getch();
}
el resultado de todo esto es qeu lee la capacidad completa de la estructura y yo solo quiero qeu lea una linea.
graciasssssssssssssssss :k

Última edición por monka; 20/04/2004 a las 01:02
  #2 (permalink)  
Antiguo 20/04/2004, 01:04
 
Fecha de Ingreso: abril-2004
Mensajes: 6
Antigüedad: 20 años, 1 mes
Puntos: 0
nadie puede ayudar?¿

nadie puede ayudarme?¿
  #3 (permalink)  
Antiguo 20/04/2004, 09:13
 
Fecha de Ingreso: abril-2004
Mensajes: 27
Antigüedad: 20 años
Puntos: 0
prueba a leer el fichero con fscanf, mira en la ayuda por que no me recuerdo exactamente de como es, pero es algo asi:

char * aux;
fscanf(uno,"%s\n",aux);

De esta forma vas leyendo del fichero hasta que encuentra el salto de linea, el resultado de lo leido lo almacena en aux.

espero haber servido de ayuda.


__________________
nos vemos
  #4 (permalink)  
Antiguo 20/04/2004, 16:12
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 6 meses
Puntos: 52
si , exacto.

En tu estructura puedes incluir apellidos maternosy paternos.

Con fscanf vas a leer el archivo hasta encontrar un espacio. Ya depende de tu creatividad que mas puedas hacer con el fscanf.


char cadena [127];

fscanf(file, "%s", cadena);
  #5 (permalink)  
Antiguo 01/05/2004, 00:23
Avatar de artury  
Fecha de Ingreso: marzo-2004
Ubicación: Leon, Mexico
Mensajes: 210
Antigüedad: 20 años, 2 meses
Puntos: 0
lo primero que debes saber es como estan separados los registros, donde termina uno y comienza el siguiente. Despues debes conocer el tipo y en su caso la longitud de cada campo. Con esto podrás hacerlo.
__________________
asi es eso del box
  #6 (permalink)  
Antiguo 01/05/2004, 10:32
 
Fecha de Ingreso: septiembre-2003
Mensajes: 172
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola, mira a ver si hay un fgets que me suena que si y te leeria hasta el \n.

Saludos!
__________________
Sr.Propio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:28.