elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema lectura de archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema lectura de archivo  (Leído 4,000 veces)
javahat

Desconectado Desconectado

Mensajes: 37


Ver Perfil
problema lectura de archivo
« en: 20 Mayo 2010, 22:27 pm »

Hola tengo el sgte código, ingreso un par de datos por ejemplo nombre y edad:

raul 34
juan 12

...y después necesito leer los datos del archivo pero no me los muestra en pantalla arroja un error.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. struct registro{
  6.  
  7.    char nombre[10];
  8.    int edad;
  9.  
  10. };
  11.  
  12. int main(){
  13.  
  14.     int n,i;
  15.     struct registro usuario[10];
  16.  
  17.    FILE *archivo;
  18.  
  19.  
  20.    archivo=fopen("usuarios.txt","a+");
  21.  
  22.  
  23.    printf("Cuantos usuarios desea ingresar:");
  24.    scanf("%d",&n);
  25.  
  26.    for(i=0;i<n;i++){
  27.  
  28.    printf("Nombre:");
  29.    scanf("%s",&usuario[i].nombre);
  30.    fprintf(archivo,"%s ",usuario[i].nombre);
  31.  
  32.    printf("Edad:");
  33.    scanf("%d",&usuario[i].edad);
  34.    fprintf(archivo,"%d ",usuario[i].edad);
  35.    fprintf(archivo,"\n");
  36.  
  37.    }
  38.  
  39.  fclose(archivo);
  40. system("cls");
  41.  
  42.   archivo=fopen("usuarios.txt","r");
  43. fscanf(archivo,"%s %d",usuario[i].nombre,usuario[i].edad);
  44.  
  45.   while(!feof(archivo)){
  46.  
  47.  
  48.  
  49.   fscanf(archivo,"%s%d",usuario[i].nombre,usuario[i].edad);
  50.  
  51.  
  52.  
  53.   printf("Nombre:%s\n",usuario[i].nombre);
  54.   printf("Edad:%d\n",usuario[i].edad);
  55.  
  56.  
  57.   }
  58.  
  59.  fclose(archivo);
  60.  
  61.  
  62. }


En línea

nicolasblues86

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: problema lectura de archivo
« Respuesta #1 en: 20 Mayo 2010, 22:50 pm »



ya anda joya el problema era con los scanf cuando son cadenas los datos a tratar el '&' no se pone en cambio cuando es un entero si se tiene que agregar el '&'.. el programa ahora andaría aunque  los scanf te van a traer problemas, mejor usa fgets con stdin.. saludos!!


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. struct registro{
  6.  
  7.    char nombre[10];
  8.    int edad;
  9.  
  10. };
  11.  
  12. int main(int argc, char** argv)
  13. {
  14.  
  15.     int n,i;
  16.     struct registro usuario[10];
  17.  
  18.    FILE *archivo;
  19.  
  20.  
  21.    archivo=fopen("usuarios.txt","a+");
  22.    printf("Cuantos usuarios desea ingresar:");
  23.    scanf("%d",&n);
  24.  
  25.    for(i=0;i<n;i++)
  26. {
  27.  
  28. printf("Nombre:");
  29. scanf("%s",usuario[i].nombre);
  30. fprintf(archivo,"%s ",usuario[i].nombre);
  31.  
  32. printf("Edad:");
  33. scanf("%d", &usuario[i].edad);
  34. fprintf(archivo,"%d ",usuario[i].edad);
  35. fprintf(archivo,"\n");
  36.  
  37.    }
  38. fclose(archivo);
  39. archivo=fopen("usuarios.txt","r");
  40. fscanf(archivo,"%s %d",usuario[i].nombre,&usuario[i].edad);
  41.  
  42. while(!feof(archivo))
  43. {
  44.  
  45. fscanf(archivo,"%s %d",usuario[i].nombre,&usuario[i].edad);
  46. printf("Nombre:%s\n",usuario[i].nombre);
  47. printf("Edad:%d\n",usuario[i].edad);
  48.  
  49. }
  50.  
  51.  fclose(archivo);
  52.  
  53. return 0;
  54. }
  55.  


En línea

Solamente hay 10 clases de personas en el mundo los que saben leer binario y los que no
javahat

Desconectado Desconectado

Mensajes: 37


Ver Perfil
Re: problema lectura de archivo
« Respuesta #2 en: 20 Mayo 2010, 22:57 pm »

Con los "&"  ingreso bien los datos al archivo pero al mostrarlos se repite el segundo dato 2 veces ejemplo:

Ingresar:
raul 12
pepe 34

Mostrar:
pepe 34
pepe 34

tengo que hacerlo con fscanf ....
En línea

nicolasblues86

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: problema lectura de archivo
« Respuesta #3 en: 20 Mayo 2010, 23:27 pm »

Claro el problema es que cuando ya se llega a fin de archivo todavía estamos dentro del while ya que feof no mueve el puntero sino que lo hace fscanf por eso cuando llega a fin de archivo todavia tiene que imprimir lo que contiene los printf
lo unico que deberias hacer es cambiar el orden de los printf ponelos arriba del fscanf y si no me equivoco ya estaria solucionado :D

Código
  1. while(!feof(archivo))
  2. {
  3.   printf("Nombre:%s\n", usuario[i].nombre);
  4. printf("Edad:%d\n", usuario[i].edad);
  5. fscanf(archivo, "%s %d",usuario[i].nombre, &usuario[i].edad);
  6.  
  7.  
  8. }
  9.  



Saludos !!!
En línea

Solamente hay 10 clases de personas en el mundo los que saben leer binario y los que no
javahat

Desconectado Desconectado

Mensajes: 37


Ver Perfil
Re: problema lectura de archivo
« Respuesta #4 en: 21 Mayo 2010, 05:21 am »

Gracias me sirvió mucho tu ayuda pero para tenerlo en cuenta como puedo hacerlo con fgets? me podrías explicar, estoy iniciando en esto de los archivos y estoy un poco complicado.
En línea

AckeR

Desconectado Desconectado

Mensajes: 109


Tu única Limitación Es tú Imaginación (:


Ver Perfil
Re: problema lectura de archivo
« Respuesta #5 en: 21 Mayo 2010, 05:50 am »

http://www.cplusplus.com/reference/clibrary/cstdio/fgets/
http://en.wikipedia.org/wiki/Fgets

y creo que no está demas leer esto:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html


Ahí puedes ver como se utiliza fgets.

char * fgets ( char * str, int num, FILE * stream );

por ej:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.  
  6. char text[100];
  7.  
  8. printf("Ingrese cadena: ");
  9. fgets(text, 100, stdin);
  10.  
  11. printf("%s",text);
  12.  
  13. return 0;
  14. }
  15.  
  16.  

suerte!

En línea


...DaR LaS GraCiaS No CuestA NadA...
nicolasblues86

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: problema lectura de archivo
« Respuesta #6 en: 22 Mayo 2010, 01:04 am »

por las dudas que te hallas referido a fgets para tratamiento de archivo seria muy parecido a como lo plantea AckeR sol oque suplantas stdin por el puntero FILE ejemplo:


Código
  1.  
  2.        fgets (buf,121,archivo); pasa a la siguiente linea y la copia en el buffer
  3. while(!feof(archivo))
  4. {
  5.  
  6.                puts(buff); //imprime lo que haya en el bufer  
  7.             fgets (buf,121,archivo); // pasa a la siguiente linea y la copia en el buffer
  8.  
  9. }
  10.  
  11.  

otra manera podria ser.


Código
  1.  
  2. while( fgets (buf,121,archivo))
  3. {
  4.  
  5.                puts(buff); //imprime lo que haya en el bufer  
  6.  
  7. }
  8.  
  9.  


Salduos
En línea

Solamente hay 10 clases de personas en el mundo los que saben leer binario y los que no
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda]Lectura de Archivo txt
PHP
rolly21102 5 3,971 Último mensaje 17 Julio 2011, 01:00 am
por WHK
Duda con lectura de un archivo de recursos
.NET (C#, VB.NET, ASP)
hackertotal22 2 5,302 Último mensaje 9 Agosto 2011, 11:37 am
por hackertotal22
Ayuda Con Lectura Archivo en c++
Programación C/C++
ZedGe 2 2,689 Último mensaje 23 Diciembre 2011, 20:32 pm
por ZedGe
Duda abriendo archivo en binario para lectura !!
.NET (C#, VB.NET, ASP)
TrashAmbishion 1 3,177 Último mensaje 26 Octubre 2013, 21:24 pm
por Eleкtro
Problema con la lectura de este archivo Binario
Programación C/C++
ProgramadorAnonimo 6 5,087 Último mensaje 29 Septiembre 2021, 12:29 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines