我使用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是浮点数,字母数字值还是特殊字符?
答案 0 :(得分:3)
你的ch
绝不是那些东西。 总是指向一个字符数组的指针。
您可能想知道这些字符是否是数值的文本表示。为此,您可以在令牌上运行strtol()
或strtod()
,看看您是否成功。请注意,12.34
之类的内容将作为整数和浮点数成功读取,因此您应该为这些函数提供第二个参数,并检查您是否真正到达令牌的末尾(而不是仅转换令牌的初始部分):
char * e;
long int n = strtol(ch, &e, 0);
if (*e != 0) { /* error? */ }
答案 1 :(得分:1)
您可以使用is*
系列功能,例如isalpha()
但请注意,这只会告诉您一个字符的值。字符只是一个字符,例如,它不是浮点数。