C 检查标记是浮点字母数字还是特殊字符。
我使用strtok从stdin获取一行令牌C 检查标记是浮点字母数字还是特殊字符。,c,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是浮点、字母数字值还是特殊字符 你的ch从来都不是这些东西。它始终是指向字
fgets(line,MAXCOLS,stdin);
printf("line:%s\n",line);
ch = strtok(line," ");
while(ch != NULL)
{
printf("%s\n",ch);
ch = strtok(NULL," ");
}
但我如何确定我的ch是浮点、字母数字值还是特殊字符 你的
ch
从来都不是这些东西。它始终是指向字符数组的指针
您可能想知道这些字符是否是数值的文本表示形式。为此,您可以在令牌上运行strtol()
或strtod()
,看看是否成功。请注意,12.34
之类的内容将作为整数和浮点数成功读取,因此您应该为这些函数提供第二个参数,并检查是否真正到达令牌的末尾(而不是仅转换令牌的初始部分):
你的
ch
从来都不是这些东西。它始终是指向字符数组的指针
您可能想知道这些字符是否是数值的文本表示形式。为此,您可以在令牌上运行strtol()
或strtod()
,看看是否成功。请注意,12.34
之类的内容将作为整数和浮点数成功读取,因此您应该为这些函数提供第二个参数,并检查是否真正到达令牌的末尾(而不是仅转换令牌的初始部分):
您可以使用
is*
函数系列,例如
但是请注意,这只告诉您一个字符的值。字符只是一个字符,例如,它不是浮点。您可以使用
is*
函数系列,例如
但是请注意,这只告诉您一个字符的值。例如,字符只是一个字符,而不是一个浮点。
ch
将始终具有相同的类型,char*
。根据文件的编码(ASCII、ANSI、UTF8等),您可以检查ch
作为字符指向的值,查看它们是否为0..9、a..z/a..z等。问题是,如何检查?Isnum检查整数值,而不是浮点数。ch
将始终具有相同的类型,char*
。根据文件的编码(ASCII、ANSI、UTF8等),您可以检查ch
作为字符指向的值,查看它们是否为0..9、a..z/a..z等。问题是,如何检查?Isnum检查整数值,而不是浮点值。
char * e;
long int n = strtol(ch, &e, 0);
if (*e != 0) { /* error? */ }