我有這個代碼,它工作得很好除了當我的輸入是數字「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