从C中的函数返回的最终程序

问题描述 投票:0回答:1

我想以错误消息结束程序,并从函数内部返回值100:

    void readSize(int *rows, int *cols) {
        while(!(scanf("%d %d", rows, cols))) {
            fputs("Error: Incorrect input!\n", stderr);
            return 100;
        }
    }

如果您知道我的意思,我希望该返回值返回100,就像它来自main()一样。我尝试过goto,但是它不能在函数之间跳转。有什么想法吗?

c function error-handling return-value void
1个回答
1
投票

摘自史蒂夫·萨米特(Steve Summit)的评论。只需使用exit(100)

您要寻找的功能是exit()。作为参数,您传递要返回的返回码。有一些标准宏,例如EXIT_SUCCESSEXIT_FAILURE,但是您可以选择一个int。当在功能main中使用时,exit(x)等效于return x

您可以在此处阅读有关退出功能的信息:https://port70.net/~nsz/c/c11/n1570.html#7.22.4.4

另一个细节是while(!(scanf("%d %d", rows, cols)))错误。如果成功分配了rowcols,则scanf将返回2。当然,如果返回2,则将您写的内容视为成功,但是如果返回1,则将执行相同的操作,应该为视为失败。相反,请执行while(!(scanf("%d %d", rows, cols)) == 2),或者如果更适合您的需要,甚至更好,请考虑fgetssscanf的组合,如here

© www.soinside.com 2019 - 2024. All rights reserved.