C 语句之间的错误
充分披露:这是一个家庭作业,我有错误 我正在接收到神秘的间歇性SEGFULTS-就在C 语句之间的错误,c,segmentation-fault,C,Segmentation Fault,充分披露:这是一个家庭作业,我有错误 我正在接收到神秘的间歇性SEGFULTS-就在printf(…,pas_isin(列表,5)之后,但在下一个printf之前。或者至少输出表明了这一点-我猜它可能在pas_isin内部的某个地方终止,并且STDOUT没有被刷新 printf("\n\nTesting isIn with 5 - should return 1"); printf("\npas_isIn returned %i",pas_isIn(thelist,5)); printf("\
printf(…,pas_isin(列表,5)
之后,但在下一个printf
之前。或者至少输出表明了这一点-我猜它可能在pas_isin
内部的某个地方终止,并且STDOUT没有被刷新
printf("\n\nTesting isIn with 5 - should return 1");
printf("\npas_isIn returned %i",pas_isIn(thelist,5));
printf("\n\nTesting isIn with 10000 - should return 0");
printf("\npas_isIn returned %i",pas_isIn(thelist,10000));
下面是pas_isIn():
//如果给定列表包含给定值,则返回true
int pas_isIn(int列表[],int x){
int t;
整数长度;
//空列表不包含太多内容
如果(pas_isEmpty(thelist)){返回0;}
因为(t=1;tlength
未在代码中初始化,似乎您已将数组的长度存储在它的第一个元素中,所以应该这样做
//returns true if the given list contains the given value
int pas_isIn(int thelist[], int x) {
int t;
int length;
length = thelist[0];
//empty list dont' contain much of anything
if (pas_isEmpty(thelist)) { return 0; }
for (t=1; t <= length; t++) {
if (thelist[t]==x)
return 1;
}
return 0;
}
//如果给定列表包含给定值,则返回true
int pas_isIn(int列表[],int x){
int t;
整数长度;
长度=列表[0];
//空列表不包含太多内容
如果(pas_isEmpty(thelist)){返回0;}
对于(t=1;t长度不是初始值)我不明白为什么有人会否决你。问题是关于主题的。你展示了你的代码,解释了你的错误,寻求帮助。你承认这是家庭作业。我将向上投票给你只是为了平衡否决票。实际上,我指的是列表[0]但是,是的,就是这样。Durp。在这个代码中,x
将比列表的长度多一个,因为你写的是t否,x是正在搜索的值。
//returns true if the given list contains the given value
int pas_isIn(int thelist[], int x) {
int t;
int length;
length = thelist[0];
//empty list dont' contain much of anything
if (pas_isEmpty(thelist)) { return 0; }
for (t=1; t <= length; t++) {
if (thelist[t]==x)
return 1;
}
return 0;
}