while循环后代码不会继续

时间:2012-11-25 10:33:35

标签: c

那么,

除了上次printf我打电话外,一切都运作良好。 我想在此代码中输出已删除的字符:

#include <stdio.h>

int del_lower_vowels(char c) {
    if(c=='a') {
        return 0;
    }
    if(c=='e') {
        return 0;
    }
    if(c=='i') {
        return 0;
    }
    if(c=='o') {
        return 0;
    }
    if(c=='u') {
        return 0;
    }
    else
        return c;
}

int main (void) {
    printf("Enter a string\n");
    int c;
    int del = 0;
    while((c=getchar()) != EOF)
    {
        c = del_lower_vowels(c);
        if(c==0)
        {
            del +=1;
        }
        putchar(c);
    }
    printf("Deleted characters: %d",del);
    return 0;
}

2 个答案:

答案 0 :(得分:5)

当没有更多可用输入并且您没有从文件重定向stdin时,

getchar()正在阻塞。只需要等待,直到你做更多的输入,或者用CTRL + D(Linux)或CTRL + Z(Windows)向终端发送EOF。

答案 1 :(得分:1)

只需按Enter即可关闭输入流(本例中为标准输入),因此程序会继续运行(这是正确的)。当我按下Ctrl + D(这发送EOF)时,我得到已删除字符的数量,程序结束。