无法读取for循环内的所有字符(使用getchar)

时间:2014-07-18 16:59:00

标签: c

代码: //找不到元音的程序

#include<stdio.h>
int main()
{
    int count;char letter;int vowel=0;
    for(count=0;count<10;count++)
    {
        letter=getchar();
        switch(letter)
        {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':vowel++;
        }printf("Count:%d",count);
    }
    printf("NO of vowels is %d\n",vowel);

return 0;
}

输出: 一个 一个 小号 d F 元音的NO是2

程序只读取5个字符,然后显示预期的输出。我尝试打印'count'的值,并在循环结束时,它增加到10.但是,我无法读取相当于我的for循环条件的字符数(10)。请帮忙。

3 个答案:

答案 0 :(得分:1)

空间' '也是一个角色。 getchar一次读取一个字符,因此也会读取' '。从输入中删除空格。

答案 1 :(得分:1)

我很惊讶你没有从printf("Count: %d\n");行注意到每个输入字母的计数增加2。 getChar函数从输入文本中获取所有字符,包括空格和换行符。使程序按预期运行的最简单方法是将最大计数增加到20:

for(count = 0; count < 20; count++)
{
    letter = getchar();
    // ...

备选方案包括使用scanf并检查是否到达文本输入的末尾,但您的实现更加安全。

答案 2 :(得分:0)

#include <stdio.h>
#include <ctype.h>

int main(){
    int count=0, vowel=0;
    char letter;
    while(count < 10){
        letter=getchar();
        if(isgraph(letter)){
            switch(tolower(letter)) {
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':vowel++;
            }
            ++count;//Counting only the case of the display characters that are not blank
        }
    }
    printf("NO of vowels is %d\n",vowel);

    return 0;
}