C总线错误:10 bootstrap.sh
因此,在运行此代码时,我不断收到错误: “/Applications/TextMate.app/Contents/SharedSupport/Bundles/C.tmbundle/Support/bin/bootstrap.sh:第7行:11441总线错误:10”$3“ 我浏览了以前的帖子,但没有弄明白,有人知道为什么会发生这种情况吗。我看到一些帖子说这是因为数组太大而无法存储,但我无法想象2个20space int数组有这么大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
#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()”循环是否真的在您认为的地方终止:)
您绝对需要更改代码以检查:
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,以确保文件实际上已打开。