我在创建一个从.txt文件中读取数字然后将它们写入单独变量的函数时遇到了麻烦。
这是我写的代码,在这里我试着只读四个数字,看看代码是否有效:
void read_prop_data(double *prop1, double *prop2, double *prop3, double *prop4) {
FILE *file_pointer = fopen("prop_dati.txt", "r");
if (file_pointer == NULL) {
printf("Unable to open file\n");
return 1;
}
fscanf(file_pointer, "%lf", prop1);
fscanf(file_pointer, "%lf", prop2);
fscanf(file_pointer, "%lf", prop3);
fscanf(file_pointer, "%lf", prop4);
printf("The values of the properties are: %lf %lf %lf %lf\n",
*prop1, *prop2, *prop3, *prop4);
fclose(file_pointer);
}
int main() {
double prop1, prop2, prop3, prop4;
read_prop_data(&prop1, &prop2, &prop3, &prop4);
return 0;
}
下面是文件prop_dati.txt的前四行:
2
0.4
2
0.998
下面是函数打印的内容:
The values of the properties are: 0.000000 0.000000 0.000000 0.000000
你知道为什么我的函数不能读取文件中的数字吗?
1条答案
按热度按时间i5desfxk1#
以下是一些你应该解决的问题:
#include <stdio.h>
read_prop_data
的返回类型更改为int
,并返回成功读取的次数;fscanf()
的返回值以检测转换错误。我怀疑文件在第一个数字之前包含其他数据...可能是fscanf()
没有跳过的字节顺序标记(BOM)。这里有一个修改过的版本,你可以试试: