C总线错误:10 bootstrap.sh

时间:2012-07-17 05:06:25

标签: c

因此,在运行此代码时,我不断收到错误:

“/ 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

3 个答案:

答案 0 :(得分:2)

如果输入错误,

fscanf可以返回EOF(-1?) - 假设这不是你的问题。 什么阻止x读取所有数字?看起来你的意思是在number == 0时停止循环。

答案 1 :(得分:0)

放入print()(或在调试器中运行)并查看“for()”循环是否真正终止于您认为的位置:)

您绝对需要更改代码以检查:

  1. “fopen()”

  2. 出错
  3. “fscanf()”

  4. 出错

答案 2 :(得分:-2)

fscanf返回成功读取的项目数,我想您要测试number == 0是否要从循环中断开。