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() は、利用可能な入力がなく、ファイルから stdin をリダイレクトしていない場合にブロックされます。さらに入力を行うか、CTRL+D (Linux) または CTRL+Z (Windows) で端末に EOF を送信するまで、単に永久に待機します。

于 2012-11-25T10:39:56.417 に答える
1

Enter を押すだけでは入力ストリーム (この場合は標準入力) は閉じられないため、プログラムは実行され続けます (これは正しいことです)。Ctrl+D を押すと (EOF が送信されます)、削除された文字数が取得され、プログラムが終了します。

于 2012-11-25T10:41:47.570 に答える