我想以错误消息结束程序,并从函数内部返回值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)的评论。只需使用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)))
错误。如果成功分配了row
和cols
,则scanf
将返回2。当然,如果返回2,则将您写的内容视为成功,但是如果返回1,则将执行相同的操作,应该为视为失败。相反,请执行while(!(scanf("%d %d", rows, cols)) == 2)
,或者如果更适合您的需要,甚至更好,请考虑fgets
和sscanf
的组合,如here