将具有不同变量类型的文件读入c中的结构

Reading a file with different variable types into a structure in c

我正在尝试了解如何读取包含不同变量类型的文件。在这种情况下,.txt 文件的格式如下。

MCD
McDonald's
20.45
BK
Burger King
30.47
DQ
Dairy Queen
25.63

它采用两个字符串后跟一个双精度字符串的模式。我读取文件的代码如下

int fillArray(struct Stock * array, FILE * fin)
{
   int i = 0;
   char buff[MAX];
   while(fgets(buff, MAX, fin) != NULL)
   {
       strcpy(array[i].symbol, buff);
       fgets(buff, MAX, fin);
       strcpy(array[i].companyName, buff);
       fscanf(fin, "%lf", &array[i].currentPrice);
       i++;
    }
    return i;
}

当我去打印结构时,我得到了这个输出。

MCD
McDonald's
20.45
BK
0.00Burger Kin30.47
30.47
0.00DQ
Dairy Queen
25.63

0.00

似乎一旦读取带有空格的字符串,事情就会分崩离析。有谁知道这可能是什么原因造成的?谢谢

使用

读取号码后
fscanf(fin, "%lf", &array[i].currentPrice);

输入流中仍然存在换行符。下一次调用 fgets() 只会将换行符读入数组。

添加以下内容以跳至该行末尾。

int c;
while ( ( c = fgetc(stdin)) != EOF && c != '\n');