因此,在运行此代码时,我不断收到错误:
“/ Applications / TextMate.app / Contents / SharedSupport / Bundles / C.tmbundle / Support / bin / bootstrap.sh:line 7:11441总线错误:10”$ 3“.out”
我浏览了之前的帖子,但无法弄清楚,有没有人知道为什么会发生这种情况。我看过帖子说这是因为数组对于内存来说太大了但是我无法想象2 20个空间int数组是那么大。
#include <stdio.h>
int read_file(int *x, int *y);
int main()
{
int count, x[25], y[25];
count = read_file(x,y);
return 0;
}
int read_file(int *x, int *y)
{
int number, i;
FILE *fp;
fp = fopen("data.txt", "r");
printf("File open");
for(i = 0 ; fscanf(fp, "%d", &number) != 0; i++)
{
x[i] = number;
}
for(i = 0 ; fscanf(fp, "%d", &number) != 0; i++)
{
y[i] = number;
}
fclose(fp);
return (i-1);
}
data.txt看起来像是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0
答案 0 :(得分:2)
fscanf可以返回EOF(-1?) - 假设这不是你的问题。 什么阻止x读取所有数字?看起来你的意思是在number == 0时停止循环。
答案 1 :(得分:0)
放入print()(或在调试器中运行)并查看“for()”循环是否真正终止于您认为的位置:)
您绝对需要更改代码以检查:
“fopen()”
“fscanf()”
答案 2 :(得分:-2)
fscanf
返回成功读取的项目数,我想您要测试number == 0
是否要从循环中断开。