Я продолжаю получать ошибку сегментации в линейном массиве [j] = array [j] +1. Я включил часть основной функции, используемой для вызова «режима», функции, с которой я столкнулся. Предполагается, что программа принимает пользовательский ввод в виде строки. В зависимости от того, что говорит строка, функция выполняет разные вещи. Для входного «режима» он берет массив у пользователя, а затем находит режим или число, которое появляется чаще всего. Программа может быть не самой чистой или самой эффективной, но мне просто нужно ее работать. Спасибо за любую помощь.Почему я получаю ошибку сегментации здесь (C)
int mode(int input[]){
int array[30]={0},i=0,j=0,i2=0,j2=0;
while (input[i]!='\0'){
j=input[i];
array[j]=array[j]+1;
i++;
}
while (array[i2]!='\0'){
if (array[i2]>j2){
j2=array[i2];
i2++;
}
else{
i2++;
}
}
return j2;
}
int main(){
char function_called[7];
int nums_for_mode[50],num_for_primes;
int num1,den1,num2,den2;
printf("Please choose a function (mode, primes, or fradd): ");
scanf("%s",&function_called);
if(strcmp(function_called, "mode")==0){
printf("\nPlease provide numbers between 1 and 30: ");
scanf("%i",&nums_for_mode);
printf("\nThe mode is %i\n",mode(nums_for_mode));
}
Unrelated: Сколько элементов 'char', по вашему мнению, необходимо для хранения строки« простые »? Подсказка: его * больше * чем 6. – WhozCraig
_scanf ("% i", & nums_for_mode) _ выглядит подозрительно. ваше сканирование целого числа на адрес по адресу int – amdixon