问题描述
- fscanf() 在文件内按格式读取,为什么读出来的全是零?
-
int PrintGood() { FILE *fp=fopen("E:\商品信息.txt","w+"); if(fp==NULL) { exit(0); } int i; for(i=0;i<list.lenth;i++) { fprintf(fp,"%s %s %0.2f %dn",list.good[i].lei,list.good[i].name,list.good[i].price,list.good[i].buy); } return 0; }
打印的文件如下
E:商品信息
书 数据 35.00 2016
食 草莓 35.00 2015
肥 克拉 100.00 2013
药 天魔 60.00 9999读取的函数
int ReadGood() { FILE *fp=fopen("E:\商品信息.txt","r+"); if(fp==NULL) { exit(0); } int i=0; printf("读入的是:"); fflush(stdin); printf("%d",fscanf(fp,"%s %s %0.2f %d",list.good[i].lei,list.good[i].name,&list.good[i].price,&list.good[i].buy)); while(fscanf(fp,"%s %s %0.2f %d",list.good[i].lei,list.good[i].name,&list.good[i].price,&list.good[i].buy)!=EOF) { i++; printf("list.lenth=%d",list.lenth); printf("%s %s %0.2f %dn", list.good[i].lei,list.good[i].name, list.good[i].price, list.good[i].buy); list.lenth++; } system("pause"); fclose(fp); return 0; }
解决方案
list在哪里定义的,里面有没有值?lenth?是不是length,拼写也不对。
解决方案二:
你的fscanf不太对,%0.2f改成%f以后试试
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int ReadGood()
{
char lei[32],name[32];
float price;
int buy;
FILE *fp=fopen("E:\商品信息.txt","r+");
if(fp==NULL)
{
exit(0);
}
int i=0;
printf("读入的是:");
fflush(stdin);
//printf("%d",fscanf(fp,"%s %s %f %d",lei,name,&price,&buy));
while(fscanf(fp,"%s %s %f %d",lei,name,&price,&buy)!=EOF)
{
i++;
printf("%s %s %.2f %dn",lei,name,price,buy);
}
system("pause");
fclose(fp);
return 0;
}
int main()
{
ReadGood();
}
时间: 2024-12-26 20:42:05