Getchar在c中仅保存1个字符

时间:2018-03-12 22:14:37

标签: c arrays while-loop user-input getchar

所以,我会提前做好,这可能会让我的问题被解决,但我没有太多可以解决的问题,所以这可能是一个不完整的问题,但我&#39 ;完全卡住了。我正在用C编写程序,以便能够计算用户提供的字符的出现次数。我目前正在尝试使用getchar()在while循环中保存字符,因为我尝试显示结果它给了我循环内的整个输入,但是当它退出循环时它会保存最后一个char字符(我明白了)为什么它这样做,而不是如何解决它)。注意:此代码包含回答此问题所不需要的额外部分,这些部分稍后将在我的代码中提供。 :) 这是我目前的代码(3/12/18),对不起,我不能更透彻:

#include<stdio.h>
#include<stdbool.h>
#include<string.h>
#define N 26

int main(void) {

    char ch, index;
    int count[N] = {0}, tolower(int ch);

    printf("Enter a sentence (end by '.'): \n");
    while(ch != '.') {
        ch = getchar();
        putchar(ch);  \\print testing to see where the characters are "leaving"
    }
    printf("%c", ch);  \\print testing to see if the characters go past the loop

}

1 个答案:

答案 0 :(得分:1)

您需要按此顺序执行循环事件:

  1. 读一个角色
  2. 如果是'.'EOF
  3. ,则中止循环
  4. 写下角色
  5. 转到1
  6. 此外,您需要使用int来存储getchar()的返回值,否则您无法检查EOF(这不是字符)。

    如果你真的将这些步骤翻译成代码,你会得到:

    int ch;
    for (;;)
    {
         ch = getchar();
         if ( ch == '.' || ch == EOF )
              break;
         putchar(ch);
    }
    

    虽然将前两个语句组合成循环条件是一种常见的习惯用法:

    int ch;
    while ( (ch = getchar()) != '.' && ch != EOF )
        putchar(ch);