所以我想知道,检查用户输入(stdin)的最简单方法是什么。 我得出结论,理想情况是扫描用户输入并打印出结果。
虽然现在我有些困惑,但我该怎么做呢。这就是我的想法:
#include <stdio.h>
int main(){
char input[30];
printf("Please enter text\n");
scanf("%s", &input);
...
所以这是我无法真正包围的部分。所以我想做的是,逐个字符地贯穿整个单词(输入)。
基本上,如果字符串只包含数字(0-9),我希望将输入标识为数字。否则,将其检测为字符串。
我做了一些研究(尽管记住我是一个绝对的初学者),有一种方法可以使用strcmp()函数,但是我更喜欢避免使用其他库,比如string.h正如我试图解释的那样,按照简单的方式去做。
答案 0 :(得分:3)
做吧。
#include <stdio.h>
int checkIfNumber(const char *word) {
/* check until the string ends */
while (*word != '\0') {
/* return 0 if the character isn't a number */
if (*word < '0' || '9' < *word) return 0;
/* proceed to the next character */
word++;
}
/* no characters other than numbers found */
return 1;
}
int main(void){
char input[30];
printf("Please enter text\n");
scanf("%29s", input);
if(checkIfNumber(input)) {
printf("%s is number\n", input);
} else {
printf("%s is string\n", input);
}
return 0;
}
请注意,数字的字符代码在C中是连续的,因此这种基于范围的方法对于检查字符是否为数字(十进制数字)很有用。 此方法可能不适用于字母表,尤其是在使用非ASCII字符代码的系统上。
N1256 5.2.1字符集
在源和执行基本字符集中, 上述小数位数列表中0后的每个字符的值应大于1 以前的价值。