我有这个代码,它工作得很好除了当我的输入是数字“2”。“错误分段错误(核心转储)”,而在数组中使用C
我不知道为什么,代码似乎没问题... 有什么问题吗?
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')。阅读关于[未定义的行为](http://en.wikipedia.org/wiki/Undefined_behavior) – 2015-02-10 20:39:10
除了'int * a'和'int dim'外,我发现从main()传递变量没有意义,为什么你在做那个吗?另外,你的意见是什么? – 2015-02-10 20:42:05
@iharob我的教授给了我这个练习:( – 2015-02-10 20:48:26