如何使用getchar()扫描单词

时间:2015-05-01 08:31:04

标签: c arrays scanf getchar

我正在编写一个程序,我想扫描一个单词并将其保存在一个字符数组中。如何使用getchar()从用户输入到数组的单词扫描。感谢。

1 个答案:

答案 0 :(得分:0)

扫描"字"通常涉及5个步骤:

  1. (可选)扫描并抛弃所有前导空格。

  2. 扫描并保存一些有限数量的非空白区域。

  3. 继续,直到遇到EOF或空白字符 - 将最后一个字符放回去。

  4. '\0'附加到"字"。

  5. 报告结果。

  6. // Return count of `char` saved into word.  -1 on EOF.
    int JG_ReadWord(char *buffer, int size) {
      int ch;
      while (isspace(ch = getchar());
      int len;
      for (len=0; len < size-1 && ch != EOF && !isspace(ch); len++) {
        buffer[len] = ch;
        ch = getchar(); 
      }
      buffer[len] = '\0';
      unget(ch, stdin);
      if (len == 0 && ch == EOF) return -1;
      return len; 
    }
    

    这类似于

    char buffer[80];
    // retval = 1 (word of length > 0), or EOF.
    int retval = scanf("%79s", buffer);