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 %d\n",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 %d\n",   list.good[i].lei,list.good[i].name, list.good[i].price, list.good[i].buy);
        list.lenth++;
    }
    system("pause");
    fclose(fp);
    return 0;

}

2个回答

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 %d\n",lei,name,price,buy);
    }
    system("pause");
    fclose(fp);
    return 0;

}
int main()
{
    ReadGood();
}

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐