在C程序中读取文件.txt

时间:2017-04-05 21:38:38

标签: c

我正在使用C语言编写并行openmp,我使用此代码从.txt文件中读取一百万个数据。

 FILE *data = NULL;
 data = fopen("1millon.txt","r");

float ID, n, cord[1000000],cordy[1000000];
int ale = 1000000;  
for(i=0;i<ale;i++){

fscanf (data, "%f %f", &ID, &n);
    cordx[i]=ID;
    cordy[i]=n;
} 

实际上,当我在普通计算机上运行程序时,这个“fscanf”运行良好。但是,如果我想在集群中运行它以进行并行化,它将向我显示下一个警告(警告:忽略'fscanf'的返回值,使用属性warn_unused_result [-Wunused-result]声明   fscanf(data,“%f%f”,&amp; ID,&amp; n); ) 它不会运行。“

你知道如何读取.txt文件而不是“fscanf”,“fread”吗?

由于

1 个答案:

答案 0 :(得分:1)

fscanf()会返回一些内容。它应该可以帮助您发现问题和特殊情况。您的群集已配置为抱怨。您自己的PC没有这样配置,因此它不会发出警告。

为了避免群集上的警告,请不要忽略返回值。即检查你是否成功匹配。

或者执行(void) fsanf...告诉编译器“我故意忽略有用的返回值。”。

根据opengroup fscanf manpages(在返回值部分内),当您成功阅读两个{{1}时,您应该希望拨打fscanf的电话返回2值:

  

成功完成后,这些函数返回成功匹配和分配的输入项的数量;如果早期匹配失败,此数字可以为0。

如果返回少于2,则需要额外的工作来丢弃错误的输入(参见下面的一个很好的例子),退出进程或以其他方式处理错误。否则,由于float未读取相同的垃圾,您今后对fscanf的来电将失败。

stdin