来自 C 函数的最终程序 return

Final program return from a function in C

我想用错误消息和函数内部的 return 值 100 结束程序:

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

我希望 return 到 return 100 就像它来自 main() 如果你明白我的意思的话。我试过 goto,但它不能在函数之间跳转。有什么想法吗?

评论来自 Steve Summit。只需使用 exit(100)

您要找的函数是exit()。作为参数,您将 return 代码传递给 return。有用于此的标准宏,例如 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会return 2.当然,你写的returns 2 , 但如果它 returns 1,它会做同样的事情,这应该被视为失败。相反,做 while(!(scanf("%d %d", rows, cols)) == 2),如果它适合您的需要,甚至更好,考虑 fgetssscanf 的组合,如 here

所述