1

出色地,

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;
}
4

2 回答 2

5

当没有更多可用输入并且您没有从文件重定向标准输入时,getchar() 会阻塞。它只会永远等待,直到您进行更多输入,或者使用 CTRL+D (Linux) 或 CTRL+Z (Windows) 向终端发送 EOF。

于 2012-11-25T10:39:56.417 回答
1

只需按 Enter 不会关闭输入流(在这种情况下为标准输入),因此您的程序会继续运行(这是正确的)。当我按下 Ctrl+D(这会发送 EOF)时,我会得到已删除字符的数量并且程序结束。

于 2012-11-25T10:41:47.570 回答