我在一个文件中有3个值(用空格分隔),我使用fscanf读入3个变量。出于某种原因,值未被更改。当我打印值时,它打印内存垃圾/我设置其初始值的任何内容。我也尝试过使用带有sscanf的fgets,但没有骰子。
代码:
int numPresale; // The number of presale tickets sold
double costPresale; // The cost of presale tickets
double costDoor; // The cost of tickets sold at the door
// Opens the file. Exits program if it can't
if((inFile = fopen(fileName, "r")) == NULL) {
printf("Unable to open the input file '%s'\n", fileName);
exit(EXIT_FAILURE);
}
// Parse for information
fscanf(inFile, "%.2f %.2f %d", &costPresale, &costDoor, &numPresale);
printf("%.2f %.2f %d", costPresale, costDoor, numPresale);
fclose(inFile);
我确定我犯了一些经典的菜鸟错误,但我在网上找不到任何答案。在此先感谢您的帮助!
答案 0 :(得分:1)
值不变的原因是fscanf
找不到与您指定的格式匹配的值。此外,不需要空格。最后,由于您要将数据读入double
而非float
,因此您应使用%lf
作为格式说明符。
您可以通过查看fscanf
的返回值来检查是否收到了正确数量的项目。
这应解决这个问题:
if (fscanf(inFile, "%lf%lf%d", &costPresale, &costDoor, &numPresale) == 3) {
printf("%.2f %.2f %d", costPresale, costDoor, numPresale);
}