我正在开发一个程序,该程序确定一组值的模式,例如(3 4 2 3 3)应该打印出“3”。问题是程序必须接收要执行的数学函数的选项及其参数作为主函数中的参数,因此没有用户输入。一切都必须插入命令行并使用指针进行检查。我的程序可以工作,除了例如说用户进入(模式)但之后没有输入任何值。这应该会打印一条消息,只是说“错误”并且程序结束。但是它不会打印
Johns-MacBook-Pro-2:AdvanceCalc jvdamore$ ./a.out 模式分段错误:11
什么时候应该打印
Johns-MacBook-Pro-2:AdvanceCalc jvdamore$ ./a.out 模式错误
下面是我的代码。所以我的问题是我的 if 语句 strcmp(p[2], "") == 0 是否可以产生所需的错误消息?还是我做错了什么?
int main(int n, char **p)
{
int i, x, A[100];
if (strcmp(p[1], "mode")==0){
if (strcmp(p[2], "") == 0){
printf("ERROR");
return -1;
}
for(i=2;i<n;i++){
if (sscanf(p[i], "%d", &x) != 1) {
printf("ERROR");
return -1;
}
if (x<1 || x>30){
printf("ERROR");
return-2;
}
A[i-2]= x;
}
find_mode(A, n-2);
}