2017-10-20 25 views
-5

以下のコードをコンパイルすると、fは初期化されていません。キャラクターを初期化するにはどうすればよいのですか?私の意図は、fが入力されてcに格納されたときにループを終了することです。初期化されていないchar変数

#include <stdio.h> 
#include <string.h> 
int main(void) 
{ 
    int count= 0; 
    char c,f; 

    printf("Input a character:\n"); 
    do 
    { 
    c = getchar(); 
    count++ 
    }while(c!=f); 
    printf("number of characters: %d", count); 
    return 0; 
} 
+6

初期化しないと、 'c!= f'と比べて何を期待していますか? – Barmar

+0

'f = 'E''が問題を解決するために、変数' f'の値を設定する必要があります –

+0

あなたの質問は決して受け入れられませんでした(https://stackoverflow.com/help/accepted-answer)。 – BLUEPIXY

答えて

2

そうc != ff変数であることを起こる不定どのような値でcを比較しているので、あなたは、変数を初期化する必要があります。

文字がfであるかどうかをテストする場合は、変数ではなくリテラルと比較する必要があります。

do { 
    c = getchar(); 
    count++; 
} while (c != 'f'); 
3

fは文字 'f'以外の変数の名前です!

私は文字を初期化するにはどうすればよいchar f = 'f';

+0

乾杯、それは働いた! – oxodo

0

を初期化する必要がありますか?

文字を初期化せずに、変数を初期化します。

なぜ、私はする必要がありますか?

ローカル変数を宣言すると、この変数はスタックに割り当てられ、その値はスタックのその位置(つまりガーベッジ)の現在の値になります。

したがって、プログラムの未定義の動作を避けるために、その変数に値を設定する必要があります。あなたの特別な場合、この値は 'f'です。一重引用符は、fが文字であることを意味します。これは、変数(char)が予期するデータ型です。

関連する問題