来自 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_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
会return 2.当然,你写的returns 2 , 但如果它 returns 1,它会做同样的事情,这应该被视为失败。相反,做 while(!(scanf("%d %d", rows, cols)) == 2)
,如果它适合您的需要,甚至更好,考虑 fgets
和 sscanf
的组合,如 here
所述
我想用错误消息和函数内部的 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_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
会return 2.当然,你写的returns 2 , 但如果它 returns 1,它会做同样的事情,这应该被视为失败。相反,做 while(!(scanf("%d %d", rows, cols)) == 2)
,如果它适合您的需要,甚至更好,考虑 fgets
和 sscanf
的组合,如 here