c - 最终程序从 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,但它不能在函数之间跳转。有任何想法吗?
解决方案
来自史蒂夫峰会的评论。只需使用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
所述
推荐阅读
- python - 如何在 Python 中创建字典元组
- wavesplatform - Waves 节点同步非常慢
- android - Android不会自动备份sharedprefs?
- awk - AWK 在条件下使用 gsub
- vba - 如何使用 VBA 代码从 ms-project 的另一列中的文本自动添加文本
- php - 在 php 的数组中打印 3 个或多个连续符号
- azure-active-directory - 无法从以下位置获取配置:'https://login.microsoftonline.com/
- anaconda - Anaconda 无法安装 subprocess32
- python - 使用 python 将任务添加到任务调度程序
- javascript - 如何将 JavaScript 变量传递给 PHP?