从文本文件读取时值不正确

时间:2019-05-29 19:19:27

标签: c

当我尝试从文件中读取时,.food字符串数组中存在空格,然后输入编号不正确的内容,这会导致很多错误。

我尝试将fscanf与[^ \ n]一起使用,但无法正常工作。 我读取的所有线程都是针对我正在执行的程序使用fgets和scanf

我要阅读的文字样本

coffe filters
5.00
kg
typedef struct matvara {
    char food[100];
    float ammount;
    char unit[10];
}matvara;
#define ADDFOOD_SIZE 100;
int main(void)
{
    FILE *fp1;
    fp1 = fopen(file, "r");
    //Testing if null
for (int i = 0; i < MyList->counter ; i++)
    {   
        fgets(MyList->grocerylist[i].food, ADDFOOD_SIZE, fp1);
        MyList->grocerylist[i].food[strlen(MyList->grocerylist[i].food) - 1] = '\0';

        fscanf(fp1, "%f", &MyList->grocerylist[i].ammount);

        fgets(MyList->grocerylist[i].unit, ADDFOOD_SIZE, fp1);
        MyList->grocerylist[i].unit[strlen(MyList->grocerylist[i].unit) - 1] = '\0';
    }
fclose(fp1);

编辑:在调试器中,它开始显示。食物为空,ammount为0,咖啡过滤器进入单位。

预期结果是将正确的值读入.food,.ammount和.unit,而不会出现任何错误。

0 个答案:

没有答案