我试图找出如何读取包含不同变量类型的文件。在这种情况下,.txt文件的格式如下。
MCD
McDonald's
20.45
BK
Burger King
30.47
DQ
Dairy Queen
25.63
它采用两个字符串的模式,后跟一个double。我在该文件中读取的代码如下
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
一旦读取带空格的字符串,似乎事情就会崩溃。有谁知道这可能导致什么?感谢。
答案 0 :(得分:0)
使用
读取号码后fscanf(fin, "%lf", &array[i].currentPrice);
换行符中的换行符仍然存在。对fgets()
的下一次调用只读取数组中的换行符。
添加以下内容以跳过此后的行尾。
int c;
while ( ( c = fgetc(stdin)) != EOF && c != '\n');