【问题标题】:Input Until Non-Word Character in C, Like Java's \W在 C 中输入直到非单词字符,如 Java 的 \W
【发布时间】:2011-08-07 10:17:54
【问题描述】:

我想输入文件中的单词,这些单词由任何非字母分隔。在 C 中是否有一种类似于在 Java 中使用 \W 预定义字符类的简单方法?

我应该如何处理这个问题?

谢谢。

【问题讨论】:

  • 查看函数fgetc()isalpha(),可能是ungetc()

标签: c input word char delimited


【解决方案1】:

一般的字符类和特别是 \W 确实与 Java 无关。它们只是正则表达式支持的一部分,可用于多种语言,包括 GNU C。请参阅GNU C library Regular Expressions

【讨论】:

    【解决方案2】:

    您可以使用<ctype.h> 中定义的is_ 系列函数。

    例如,isalpha() 会告诉您某物是否是字母字符。 isspace() 会告诉你是否有空格。

    【讨论】:

      【解决方案3】:

      你可以使用fscanf(前提是你保证了最大的单词长度)

      char temp_str[1000];
      char temp_w[1000]
      while(fscanf(file, "%[a-zA-Z]%[^a-zA-Z]", temp_str, temp_w) != EOF) {
        printf("STR: %s\n", temp_str);
      }
      

      编辑:这应该可以解决问题,temp_str 将保存字母序列,temp_w 将保存分隔符

      【讨论】:

      • 非常感谢先生。一个问题,应该是z而不是b?
      • 是的,它应该是 z,我还有另一个问题。只要文件始终以字母序列开头,上述内容就可以工作。如果没有,或者如果您需要更强大的功能,您可能需要使用 getc() 和 isalpha()
      猜你喜欢
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多