首页 > 解决方案 > 最终程序从 C 中的函数返回

问题描述

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

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

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

标签: cfunctionerror-handlingreturn-valuevoid

解决方案


来自史蒂夫峰会的评论。只需使用exit(100)

您正在寻找的功能是exit(). 作为参数,您传递要返回的返回代码。为此有标准的宏,例如EXIT_SUCCESS或,EXIT_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),或者如果它适合您的需要甚至更好,请考虑将 和 的组合,fgets如此sscanf所述


推荐阅读