【发布时间】:2022-08-04 08:07:33
【问题描述】:
有没有更优雅的方式来完成这项任务?
程序要求用户输入整数并在输入非数字字符时重复。 退出循环需要两个条件: a) 所有输入的字符都是数字 b) 最后一个字符是 \'\\n\'
像 scanf 这样的短解决方案不能正常工作,其他方法需要大量的变量循环和 if else 条件。用户输入是常见任务,我希望有适当的可重用模板。
主观意见表示赞赏。简化此功能的方法或对另一种解决方案的建议。改进格式。阅读以获得更系统的理解。
#include <stdio.h>
int getIntOnly();
int main() {
int x = 0;
x = getIntOnly();
printf(\"\\nvalue entered is: %d \\n\", x);
}
int getIntOnly() {
int ch, num, quit, abc;
do {
num = 0;
ch = 0;
quit = 0;
abc = 0;
printf(\"Enter the input: \");
do {
ch = getchar();
if (ch >= 48 && ch <= 57) {
num = num * 10 + (ch - 48);
}
else if (ch == \'\\n\') {
quit = 1;
}
else {
abc = 1;
}
}
while (quit == 0);
}
while (quit == 0 || abc == 1);
return (num);
}