首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在终端中打印出错误消息

在终端中打印出错误消息
EN

Stack Overflow用户
提问于 2013-11-13 08:57:55
回答 1查看 732关注 0票数 0

我正在开发一个程序,它决定了一组值的模式,例如(3 4 2 3 3)应该打印出"3“。需要注意的是,程序必须接收要执行的数学函数的选项,并将其参数作为主函数中的参数,因此不需要用户输入。所有内容都必须插入到命令行中,并使用指针进行检查。我的程序可以正常工作,例如,用户输入(mode),但之后没有输入任何值。然后,这将打印一条消息,显示“错误”,然后程序结束。但是,它不会打印,而是打印

Johns-MacBook-Pro-2:AdvanceCalc jvdamore$ ./a.out模式分段故障: 11

应在何时打印

Johns-MacBook-Pro-2:AdvanceCalc jvdamore$ ./a.out模式错误

下面是我的代码。所以我的问题是,我使用strcmp(p2,"") == 0的if语句是否可以产生所需的错误消息?还是我做错了什么?

代码语言:javascript
复制
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);

        }
EN

回答 1

Stack Overflow用户

发布于 2013-11-13 09:03:49

不是使用strcmp将字符串与""进行比较,而是需要查看它是否为NULL。strcmp( NULL, "" )不能很好地工作,您应该这样做:

代码语言:javascript
复制
if( p[2] == NULL ) 

(实际上,您应该将可变argv重命名,还有其他几个问题,但这是主要问题。在引用p[2]之前,请确保已检查p[1]不为空)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19943223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档