检查令牌是浮点字母数字还是特殊字符。

时间:2011-12-11 19:56:17

标签: c

我使用strtok从stdin获取一行代码。

    fgets(line,MAXCOLS,stdin);
    printf("line:%s\n",line);
    ch = strtok(line," ");
    while(ch != NULL)
    {
        printf("%s\n",ch);
        ch = strtok(NULL," ");
    }

但是如何判断我的ch是浮点数,字母数字值还是特殊字符?

2 个答案:

答案 0 :(得分:3)

你的ch绝不是那些东西。 总是指向一个字符数组的指针。

您可能想知道这些字符是否是数值的文本表示。为此,您可以在令牌上运行strtol()strtod(),看看您是否成功。请注意,12.34之类的内容将作为整数和浮点数成功读取,因此您应该为这些函数提供第二个参数,并检查您是否真正到达令牌的末尾(而不是仅转换令牌的初始部分):

char * e;
long int n = strtol(ch, &e, 0);

if (*e != 0) { /* error? */ }

答案 1 :(得分:1)

您可以使用is*系列功能,例如isalpha()

但请注意,这只会告诉您一个字符的值。字符只是一个字符,例如,它不是浮点数。