我使用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是浮点数,字母数字值还是特殊字符?

===============>>#1 票数:3 已采纳

你的ch是从来没有任何的那些东西。 始终是指向字符数组的指针。

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

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

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

===============>>#2 票数:1

您可以使用is*系列函数,例如isalpha()

但是请注意,这仅告诉您一个字符的值。 字符只是一个字符,而不是浮点数。

  ask by user983043 translate from so

未解决问题?本站智能推荐: