【发布时间】:2013-11-16 00:32:54
【问题描述】:
在线数组[j]=array[j]+1 中不断出现分段错误。 我已经包含了用于调用“模式”的主要功能部分,这是我遇到问题的功能。该程序应该以字符串的形式接受用户输入。根据字符串所说的,函数会做不同的事情。对于输入“模式”,它从用户那里获取一个数组,然后找到最常出现的模式或数字。该程序可能不是最干净或最有效的,但我只需要它工作。感谢您的帮助。
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));
}
【问题讨论】:
-
无关:您认为需要多少个
char元素来保存字符串“primes”?提示:它超过 6个。 -
scanf("%i",&nums_for_mode) 看起来很可疑。您将整数扫描到地址到地址到 int
标签: c arrays segmentation-fault