【发布时间】:2020-12-09 15:22:45
【问题描述】:
我有一个程序可以读取用户输入:
char c;
scanf("%c", &c);
然后检查是否为数字:
if(isdigit(c)) {
int f = atoi(c);
return f;
}
switch(c) {
case 'q':
exit(1);
break;
...
}
...
示例程序:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
char c;
scanf("%c", &c);
if(isdigit(c)) {
int f = atoi(&c);
printf("f: %d\n", f);
return f;
}
switch(c) {
case 'q':
printf("q\n");
return -1;
break;
}
return 0;
}
但是,例如,当我输入 10 时,输入变为 1 和 0 和 \n。我想要 10。例如,如何阅读“10”、“100”和“4”以及“q”等其他字符?
【问题讨论】:
-
可以读取字符串
-
请记住,
atoi的参数是一个以 null 结尾的字符串。它也没有任何验证。使用例如strtol用于带有验证的转换函数。 -
@ForceBru 如果我读取一个字符串,那么如何将它转换为浮点数并使用 switch 语句?
-
@Someprogrammerdude 感谢您的提醒。我刚开始学习C,我知道scanf和atoi等的衰落。这只是开始。再次感谢!
-
@pointersarehard,您可以使用
strcmp代替switch语句