Buenas Tardes
He estado estudiando Lenguaje C y me han surgido una serie de dudas con el tema de manejos de archivos, de antemano les doy las gracias por su orientacion y espero que me puedan ayudar. Las dudas son las siguientes:
Tengo problemas al leer de un archivo con la funcion fscanf() y me gustaria aclarar porque no funciona, estoy tratando de leer 3 datos simultaneos en una sola instruccion pero no me muestra ningun registro. Ya he probado con fgets y va muy bien pero quiero salir de la duda y hacerlo con fscanf(), primero miremos el archivo de texto que tengo:
EL contenido del archivo de texto esta almacenado con la extension .txt pero tambien he probado con .dat (secuencial) y no me funciona:
1 pablo 2300.00
2 german 1200.00
3 rebeca 1000.00
4 Ximena 450.00
5 Sandra 790.00
El codigo del programa es el siguiente: La escritura funciona muy bien pero la lectura no va para nada.
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main(){
int cuenta,opc,a=0;;
char archivo[]="Clientes.txt";
char Nombre[30];
float Balance;
FILE *cfptr;
while(a!=1){
printf("nnESCRIBIR EN UN ARCHIVO Y LEER");
printf("n........1.Escribir.............");
printf("n........2.Leer.................");
printf("n........3.Salir................");
printf("nEscoja la opcion ");
scanf("%d",&opc);
switch(opc){
case 1:printf("nnCrear Archivo");
if((cfptr=fopen(archivo,"w"))==NULL)
printf("nEl archivo no se pudo abrir");
else{
printf("nEntre la Cuenta,Nombre y Blance:n");
printf("nEntre EOF para finalzar el archivo");
printf("nDato:");
fflush(stdin);
scanf("%d%s%f",&cuenta,Nombre,&Balance);
while(!feof(stdin)){
fprintf(cfptr,"%d %s %.2fn",cuenta,Nombre,Balance);
printf("nDato:");
fflush(stdin);
scanf("%d%s%f",&cuenta,Nombre,&Balance);
}
getch();
fclose(cfptr);
}
break;
case 2:printf("nnLeer Archivo");
if((cfptr=fopen(archivo,"r"))==NULL)
printf("nEl archivo no se pudo abrir");
else{
printf("n%-10s%-13s%sn","Cuenta","Nombre","Balance");
fscanf(cfptr,"%d %s %f",&cuenta,Nombre,&Balance);
while(!feof(cfptr)){
printf("%-10s%-13s%sn",cuenta,Nombre,Balance);
fscanf(cfptr,"%d%s%f",&cuenta,Nombre,&Balance);
}
getch();
fclose(cfptr);
}
break;
case 3:printf("nGracias por utilizar este programa");
getch();
a=1;
break;
default:printf("nCometio un error, presione tecla para continuar");
getch();
break;
}
}
return 0;
}
Espero Comentarios
De nuevo Gracias