我使用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

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

2回复

检查字符串中的字符是字母,数字还是特殊字符。 在C

我一直在研究一个问题,要求检查字符串中的数字,字母或其他特殊字符。 例如,如果您有两个输入。 一个是整数,它是字符串长度,第二个输入是字符串。 输出应为: noaaon 。 n代表数字,a代表字母,o代表其他。
3回复

如何从文件中读取带有特殊字符的浮点类型数字

我想从txt文件中读取一个float类型的数字,如下所示: 但如果我读了 它给了我一个错误,因为涉及到一个特殊的角色。 我该怎么办才能只取出漂浮部分?
1回复

程序从字符串中删除特殊字符和数字,仅打印英文字母

这就是我尝试过的。 这对于像wel $ co * me这样的小字符串正常工作,但是却为pass @ word提供了奇怪的输出。 我到底在哪里错?
2回复

比较数字和特殊字符

考虑以下C程序: 如预期的那样(由于A的ASCII码为65,所以该程序将打印语句“ condition true”)。 现在考虑以下C程序: 由于ESC的ASCII码是27,因此我希望该程序也打印“条件为真”语句。 但是,该程序甚至没有编译,但是返回了以下错误消息:
3回复

如何只接受C语言中的数字并阻止用户输入字母和特殊字符?

我只需要弄清楚在用户输入的不是数字的情况下如何给出错误。 我已经设置了无法传递或无法通过的代码值。 我只需要接受数字:如果输入了字母或任何类型的特殊字符,我希望程序自行取消。 我怎样才能做到这一点?
3回复

检查C中的特殊字符

我对如何查看C中的“字符串”是否包含特定字符有一些帮助。 简而言之: 现在,据我所知,这适用于英文字母(az,AZ)中的字母。 但是,如何检查当前字符是否等于特殊字符(例如æ , ø或å )?
1回复

检查字符串中的特殊字符(在C中)

为什么每个单词都进入if语句,以检查字符串是否以','结尾,而一个单词检查其是否以'“'结尾。 我看到像这样的词: (以上只是输入if语句的单词示例 没有人有任何线索,为什么这样的话认为他们的结局是一个"或, ?
1回复

计算文件中的行中字母,但不包括特殊字符

我的程序算字母,但是算得不好。 它应该计算文件中每一行中的字母数量。 源代码: 当在文件中“ \\ 0”行的特定符号末尾时,计数不正确。 例如,如果文件我得到以下行:qwerty \\ 00 azerty并且它仅返回6而不是12的金额。我该如何解决?
2回复

特殊字符长度

我今天发现了一些很奇怪的东西。 在上面的代码中,我看到utrlen(&eot) (utrlen == strlen)等于2,而utrlen(&etx) == 1 。 最好的部分:当我将声明顺序与utrlen(&eot) == 1交换时, utrlen(&
2回复

特殊字符文字

我想为char分配一个char文字,但这是一个特殊字符,例如255或13。 我知道我可以为我的char分配一个将被转换为char的文字整数: char a = 13; 我也知道微软会让我将十六进制代码用作char文字 : char a = '\\xd' 我想知道gcc是否也支持这样