【发布时间】:2017-08-31 17:03:46
【问题描述】:
我正在用 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", &ID, &n); ) 而且它不会运行。”
你知道另一种读取 .txt 文件而不是“fscanf”、“fread”的方法吗?
谢谢
【问题讨论】:
-
1. “它不起作用”不足以描述这种情况。程序没有编译或运行不正常? 2. ID 和 n 被声明为整数,但您的 scanf 将它们视为浮点数。真是太神奇了,在任何地方都很顺利。 3. 可以添加cordx和cordy的定义吗?
-
不要将浮点数读入整数 - 它不会顺利进行。
-
printf() 输出 ID 和 n 在您阅读它们时。那是一种“标准”测试/调试检查。除非你做这些事情,或者使用真正的调试器,否则你不会进步..
-
程序在我的操作系统中作为顺序算法正常运行,我的问题是我不能使用“fscanf”读取集群中的数据来测试像openmp这样的并行编程。
-
它可能给人一种运行正常的印象,但你的程序并不正确。另外,您的程序是否无法编译或运行?
标签: c