int main() {
int i;int j;char c;double num;
double point[65][2];
FILE *myfile;
myfile = fopen("point.txt","r");
if(myfile == NULL)
{
printf("can not open file\n");
}
else{
for(i=0;i<65;i++){
for (j=0; j<2; j++) {
fscanf(myfile, "%lf", &num);
point[i][j]=num;
printf("%lf",point[i][j]);
}
}
}
fclose(myfile);
}
我不知道为什么它总是给我一个空数组。数据中有 65 个观测值。这就是我创建 65x2 阵列的原因。
文件看起来像这样:
1.87046225914495 0.37205807606083
1.51453361512525 0.45942874936008
..
..
最佳答案
我看不到这段代码有任何错误。它可以稍微改变一下:
- 你可以直接调用
fscanf
到目标值上(fscanf(myfile, "%lf", &(point[i][j]));
) - 如果您的文件格式始终是 X*2 值,您可以删除第二个
for
循环并读取两个值(fscanf(myfile, "%lf%lf", &(point [i][0]), &(点[i][1]));
) - 你应该在阅读后打印表格内容,这样你就可以确保打印最终值(如果,比方说,你在某一点覆盖了一些值)
我唯一的猜测是与文件格式有关。如果 scanf
读取值失败(没有足够的值,格式错误的文件……),您将得不到结果。
如@ameyCU 所述,您必须检查 fscanf
返回值。它返回成功读取的“ token ”数。你应该检查它是否真的 ==1,否则它意味着格式不好(或文件中没有可用数据)。在这种情况下,部分或全部表格的内容未定义(并且根据操作系统可以用 0 填充)。
编辑:如果此文件中确实有 65x2 值,请检查是否存在无效字符,即如果您使用 Word 或类似工具创建数据文件。
关于c - 读取一个包含二维数据的文件并将它们存储到一个数组中(这是我第一次使用 c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676318/