【发布时间】:2015-02-10 20:37:52
【问题描述】:
我有这段代码,它工作得很好除非我输入的是数字“2”。
我不知道为什么,代码似乎还可以... 有什么问题吗?
void initValue(int *a, int dim, int value, int i);
int findValue(int *a, int dim, int value, int i);
main(){
int i, value, dim = 5;
int a[dim];
initValue(a, dim, value, i);
printf("\nYour values are: ");
for(i = 0; i < dim; i++) printf("%d ", a[i]);
printf("\n\n");
}
void initValue(int *a, int dim, int value, int i){
printf("Insert your values:\n");
for(i = 0; i < dim; i++){
scanf("%d", &value);
if(findValue(a, dim, value, i) == 1){
printf("This value already exist, please insert a new one.\n");
i--;
}
else a[i] = value;
}
}
int findValue(int *a, int dim, int value, int i){
int j, result = 0;
for(j = 0; j < i || a[j] != value; j++) if(a[j] == value) result = 1;
return result;
}
【问题讨论】:
-
编译时包含所有警告和调试信息 (
gcc -Wall -Wextra -g)。然后使用调试器 (gdb)。阅读undefined behavior -
除了
int *a和int dim之外,我认为从main()传递变量没有任何意义,你为什么要这样做?另外,您的意见是什么? -
@iharob 我的教授给了我这个练习:(
-
@ArtjomB。好的,对不起xD
标签: c arrays pointers segmentation-fault