当我尝试从文件中读取时,.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,而不会出现任何错误。