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;

}

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();
}

图片说明