0

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

“/Applications/TextMate.app/Contents/SharedSupport/Bundles/C.tmbundle/Support/bin/bootstrap.sh:第 7 行:11441 总线错误:10“$3”.out”

我浏览了以前的帖子,但无法弄清楚,有没有人知道为什么会发生这种情况。我看过帖子说这是因为数组对于内存来说太大了,但我无法想象 2 20space 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

4

3 回答 3

2

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

于 2012-07-17T05:13:40.813 回答
0

放入一个 print() (或在调试器中运行),看看“for()”循环是否真的在你认为的地方终止:)

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

  1. “fopen()”中的错误

  2. “fscanf()”中的错误

于 2012-07-17T05:10:35.083 回答
-2

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

于 2012-07-17T05:12:21.080 回答