通过读取字符串来检测数据类型

时间:2015-11-01 14:24:39

标签: c

所以我想知道,检查用户输入(stdin)的最简单方法是什么。 我得出结论,理想情况是扫描用户输入并打印出结果。

虽然现在我有些困惑,但我该怎么做呢。这就是我的想法:

#include <stdio.h>
int main(){

char input[30];    

 printf("Please enter text\n");
 scanf("%s", &input);

 ...

所以这是我无法真正包围的部分。所以我想做的是,逐个字符地贯穿整个单词(输入)。

基本上,如果字符串只包含数字(0-9),我希望将输入标识为数字。否则,将其检测为字符串。

我做了一些研究(尽管记住我是一个绝对的初学者),有一种方法可以使用strcmp()函数,但是我更喜欢避免使用其他库,比如string.h正如我试图解释的那样,按照简单的方式去做。

1 个答案:

答案 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   以前的价值。