C总线错误:10 bootstrap.sh

C总线错误:10 bootstrap.sh,c,C,因此,在运行此代码时,我不断收到错误: “/Applications/TextMate.app/Contents/SharedSupport/Bundles/C.tmbundle/Support/bin/bootstrap.sh:第7行:11441总线错误:10”$3“ 我浏览了以前的帖子,但没有弄明白,有人知道为什么会发生这种情况吗。我看到一些帖子说这是因为数组太大而无法存储,但我无法想象2个20space int数组有这么大 #include <stdio.h> int rea

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

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

我浏览了以前的帖子,但没有弄明白,有人知道为什么会发生这种情况吗。我看到一些帖子说这是因为数组太大而无法存储,但我无法想象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);
}
#包括
int read_文件(int*x,int*y);
int main()
{
整数计数,x[25],y[25];
计数=读取文件(x,y);
返回0;
}
int read_文件(int*x,int*y)
{
整数,i;
文件*fp;
fp=fopen(“data.txt”,“r”);
printf(“文件打开”);
对于(i=0;fscanf(fp,“%d”,&number)!=0;i++)
{
x[i]=数量;
}
对于(i=0;fscanf(fp,“%d”,&number)!=0;i++)
{
y[i]=数字;
}
fclose(fp);
返回(i-1);
}
data.txt看起来像:

12345678910112131516171818200

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 0

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

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

  • “fopen()中出现错误”

  • “fscanf()中出现错误”


  • fscanf
    返回成功读取的项目数,我认为您需要测试
    number==0
    是否中断循环。

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

    这是错误的!!!!如果你的输入恰好为零怎么办?!?!一种解决方法是测试
    fscanf(fp、%d、&number)==1
    。我强烈要求您也检查“fopen()”@paulsm4
    如果您的输入恰好为零,该怎么办?
    然后退出循环,数字为零是一组循环的结束data@Musa:使用“number==0”(一个数据值)而不是“fscanf()”(一个状态值)检测输入的结束是一个非常非常糟糕的选择。它可能恰好适用于此特定数据集。。。但为什么要限制自己???当您可以使用带外状态“免费”时,为什么要浪费带内值作为哨兵?????只需几个提示,您可能需要更改
    printf(“文件打开”)
    printf(“文件打开”),并考虑检查<代码> fOPEN()/<代码>(<代码> FP >)的返回值不是NULL,以确保文件实际上已打开。