2017-10-09 12 views
0

私は現在、ユーザが入力した文を受け取り、文中の空白、タブ、改行の数を数え、その値を出力するプログラムを書いています。getchar()で空白、タブ、改行を数えよう

入力は、!または.または?文字で終了します。

問題は、上記の文字のいずれかが入力の最後に入力されたときにプログラムが終了していないように見えることです。

#include <stdio.h> 

int main(void) 
{ 
    int space = 0, tab = 0, newline = 0; 
    int sentence; 

    printf("Enter a sentence (end by '.' or '?' or '!'):"); 

    do{ 
     sentence = getchar(); 

     if(sentence == ' '){ 
      ++space; 
     } 
     else if(sentence == '\t'){ 
      ++tab; 
     } 
     else if(sentence == '\n'){ 
      ++newline; 
     } 
    } 
    while((sentence != '.')||(sentence != '!')||(sentence != '?')); 

    printf("Number of space characters: %d\n", space); 
    printf("Number of new line characters: %d\n", newline); 
    printf("Number of tabs: %d\n", tab); 

    return 0; 
} 

私は困惑していますし、任意のヘルプは高く評価されています。ここでは

は、現在のプログラムです。

+0

コードをインデントしてください。例のようにCのテキストブック –

+0

ようこそスタックオーバーフロー!コードを___properly___インデントしてください。 Machine(Compiler)は何かを読んだりコンパイルしたりすることができますが、人間にとっては、_code_のようなテキストブロックを読んでいるときに、少し_sense_する必要があります。質問をするとき、テキスト領域の右側に大きいオレンジ色の__How to Format__ボックスがあります。また、書式設定支援ツールバー全体がありました。そして__ [?] __ボタンを押すと書式設定のヘルプが表示されます。あなたの投稿が投稿されたときにどのように見えるかを示すプレビューエリア。あなたの投稿をはっきりさせ、時間を割いていることを実証することで、良い答えを得る機会が増えます。 –

答えて

2

(または)& &(および)whileループが無限に進む理由の1つ1つと3つの条件のうちの2つが常に真であるためです。

+0

完璧に動作するようです!また、明確な説明をありがとう。 – kank

関連する問題