C中函数的最终程序返回

C中函数的最终程序返回,c,function,error-handling,return-value,void,C,Function,Error Handling,Return Value,Void,我想用错误消息结束一个程序,并从函数内部返回值100: void readSize(int *rows, int *cols) { while(!(scanf("%d %d", rows, cols))) { fputs("Error: Incorrect input!\n", stderr); return 100; } } 如果你知道我的意思的话,我想让它返回100,就像它是从main()返回的

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

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

如果你知道我的意思的话,我想让它返回100,就像它是从main()返回的一样。我尝试了goto,但它不能在函数之间跳转。有什么想法吗?

来自Steve Summit的评论。只需使用退出(100)

您正在查找的函数是
exit()
。作为参数,传递要返回的返回代码。有用于此的标准宏,如
EXIT\u SUCCESS
EXIT\u FAILURE
,但您可以选择
int
。在函数
main
中使用时,
exit(x)
相当于
return x

您可以在此处阅读有关退出功能的信息:


另一个细节是
而(!(scanf(“%d%d”,rows,cols))
是错误的。如果成功分配了
scanf
将返回2。当然,如果您所写的内容返回2,它将被视为成功,但如果它返回1,它也将被视为失败。相反,做(<代码)>()(SCANF(“%d %d”,行,COLS)=2)<或代码>,或者更好的是,如果它符合您的需要,考虑“<代码> fgs<代码> >和<代码> sSCANF< /代码>所描述的

您想要<代码>退出(100)。@目的是显示,我想做什么。另外,您的代码< SCANF调用有一些问题。我想你想要的是
如果
,而不是
,条件应该是
!=2
,而不是(实际上)
==0
。(我的观点是,如果
scanf
返回1,或者-1,或者实际上不是2,那就是失败。)@SteveSummit谢谢!我会把它放在那里,以防以后有人用类似的措辞搜索它。:)@问题和答案都很简单,但我认为你应该写下来作为答案。