コードブロックでの実行中にユーザー入力の入力がスキップされるのはなぜですか?

Sanjay Rajpoot

だから私はこのコードを持っていますが、コードの2行がスパイク読み取りされている理由がわかりません。この2行は、以下のコメントでマークされています。

   #include <iostream>
   #include<stdio.h>

using namespace std;

class publication{
     char title[20];
     int price;

     public:

     void getdata(){
        cout<< "Enter the price of the book";
        cin>>price;

        cout<< "Enter the title";  #this line 1st
        gets(title);               #this is not running
     }

      void putdata(){
       cout<<price;
       puts(title);
       }

};

class Tape:public publication{
       float play;

       public:

       void getdata(){
         cout<< "Enter play"; #this line 2nd 
         cin>>play;
       }

       void putdata(){
           cout<<endl<<play;
       }
};

int main()
{
    publication p;
    p.getdata();
    p.putdata();

    Tape t;
    t.getdata();
    t.putdata();

    book b;
    b.getdata();
    b.putdata();

}

16行目と47行目をスキップした理由がわかりません。構文を確認しましたが、すべて問題ありません。このプログラムにはエラーはありません。私はc ++用のコードブロックとgnugccコンパイラを使用しています。これは画像です

この画像では、ご覧のとおり、タイトルの入力を行わずに2行が自動コンパイルされています。問題に関係のないコードの一部の行が削除されます。

HariUserX

これはIDEでもコンパイラでも問題ではありません。かわいそうなCodeBlocksのせいにしないでください:(

プログラムでgetsとputsを使用するように促した理由がわかりません。最適化が懸念される場合は、で使用std::ios::sync_with_stdio(false);してみてくださいcin

また、gets注意しないとバッファオーバーランが発生する可能性があるため使用しないでください。fgets代わりに使用してくださいcplusplusstackoverflowを参照してください

ここで問題が発生しましたが、16行目と47行目が省略されているように見える本当の理由は、コード内の不適切な印刷ステートメントとメッセージが原因です。スキップされているように見える唯一の行はgets(title);です。実際、すべてが実行されます。

なぜgets(title)がスキップされるのですか?

したがって、priceを12と入力すると、実際には入力バッファに12\nとして格納されます。を読み取った後12\n、バッファに残ってcinいます。これ新しい行を読み取らずその新しい行を終了文字cin.getlinegets見なすためです。取得を参照してください

したがって、を使用してバッファをクリアします cin.ignore(numeric_limits<streamsize>::max(), '\n');

コードを少し再フォーマットしました。下記参照。fgets改行を有効な文字として扱い\n、タイトルに含まれるものを使用しことに注意してくださいfgetsを見る

using namespace std;

class publication {
    char title[20];
    int price;

public:

    void getdata() {
        cout << "Enter the price of the book"<<endl;
        cin >> price;

        cout << "Enter the title" << endl;

        cin.ignore(numeric_limits<streamsize>::max(), '\n');

        fgets(title, 20, stdin);        
    }

    void putdata() {
        cout << "Price is " << price << endl;
        cout << "Title is "<< title;
    }

};

class Tape :public publication {
    float play;

public:

    void getdata() {
        cout << "Enter play"<<endl; 
        cin >> play;
    }

   void putdata() {
        cout << "Play is " << play << endl;
    }
};

int main()
{
    publication p;
    p.getdata();
    p.putdata();

    Tape t;
    t.getdata();
    t.putdata();
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++でユーザー入力が実行/スキップされないようにするコード

分類Dev

ユーザー入力に基づいて特定のコードブロックを実行するにはどうすればよいですか?

分類Dev

PowerShellスクリプトを管理者として実行するように昇格する場合、ユーザーにプロンプトが表示される前に、read-hostがキーボード入力を受け入れるのはなぜですか?

分類Dev

funciton getが機能せず、ユーザー入力をスキップするのはなぜですか?

分類Dev

ユーザーが入力した入力をチェックするこのコードが正しく機能しないのはなぜですか?

分類Dev

コードを入力したときにドロップダウンにテキストが表示されないのはなぜですか

分類Dev

EmacsやNanoのようなプログラムは、ユーザーがEnterキーを押さなくても、ターミナルで実行中にユーザー入力を取得するにはどうすればよいですか?

分類Dev

ブートストラップ入力グループと入力グループアドオンが分割されるのはなぜですか?

分類Dev

ユーザーが最初のコマンドを入力した後、このメッセージが2回出力されるのはなぜですか?

分類Dev

ユーザー入力に基づいてゲームコードがループバックして終了しないのはなぜですか?

分類Dev

バーコードスキャナーは、ユーザーが入力ボックスを使用している場合にのみ「キープレス」イベントを生成します。ユーザーが入力ボックスを使用していないときに聞くイベントは何ですか?

分類Dev

コードブロックで値をラップすると、入力した数値がDoubleに変わるのはなぜですか?

分類Dev

ストリーム入力操作がスキップされるのはなぜですか?

分類Dev

ユーザー入力なしで文字列のスペルチェックを実行するにはどうすればよいですか?

分類Dev

光沢のあるアプリで印刷ボタンを作成して、ユーザーがテキストボックスに入力したテキストのハードコピーを印刷するにはどうすればよいですか?

分類Dev

コードがコードブロックで実行されているのにVSStudioでは実行されていないのはなぜですか

分類Dev

mainでループが実行されている間にユーザー入力を評価する別のスレッドを実装するにはどうすればよいですか?

分類Dev

このコードキャッチブロックが実行されないのはなぜですか?

分類Dev

このコードを実行しているときに、このcコードが入力を受け入れないのはなぜですか。このプログラムは何も入力せずに存在し始めています

分類Dev

アドレスバーにURLを入力すると、他のプロトコルではなく常に「HTTP」が使用されるのはなぜですか

分類Dev

ユーザーvagrantがパスワードを入力せずに「sudosu-」を実行できるのはなぜですか?

分類Dev

jquery-ユーザーがキーアップではなく入力を終了したときにユーザーの入力を出力しますか?

分類Dev

このユーザーがfgets()に入力すると、プログラムが中止されるのはなぜですか?

分類Dev

Flutterブロックを使用して、ユーザーが入力したときにその値を別のウィジェットに更新するテキストフィールドを作成するにはどうすればよいですか?

分類Dev

Cubit LoadedStateのdartでコードが実行されず、スキップされるのはなぜですか?

分類Dev

Pythonでは、条件が満たされた場合にtry / exceptionブロックを入力する方法はありますか?それ以外の場合は、tryブロックのコードをわかりやすく実行しますか?

分類Dev

ユーザーがテキストフィールドへの入力を一時停止してからコールバックを実行するまで待機するJSプラグインまたはjQuery関数を探しています

分類Dev

AutoCompleteTextViewを使用している場合、ユーザーがクリックしてからテキストボックスに回答を入力するまでの間にコードを実行できますか?

分類Dev

ブートストラップを使用すると、これらのラベルと入力コントロールが同じ行に表示されないのはなぜですか

Related 関連記事

  1. 1

    C ++でユーザー入力が実行/スキップされないようにするコード

  2. 2

    ユーザー入力に基づいて特定のコードブロックを実行するにはどうすればよいですか?

  3. 3

    PowerShellスクリプトを管理者として実行するように昇格する場合、ユーザーにプロンプトが表示される前に、read-hostがキーボード入力を受け入れるのはなぜですか?

  4. 4

    funciton getが機能せず、ユーザー入力をスキップするのはなぜですか?

  5. 5

    ユーザーが入力した入力をチェックするこのコードが正しく機能しないのはなぜですか?

  6. 6

    コードを入力したときにドロップダウンにテキストが表示されないのはなぜですか

  7. 7

    EmacsやNanoのようなプログラムは、ユーザーがEnterキーを押さなくても、ターミナルで実行中にユーザー入力を取得するにはどうすればよいですか?

  8. 8

    ブートストラップ入力グループと入力グループアドオンが分割されるのはなぜですか?

  9. 9

    ユーザーが最初のコマンドを入力した後、このメッセージが2回出力されるのはなぜですか?

  10. 10

    ユーザー入力に基づいてゲームコードがループバックして終了しないのはなぜですか?

  11. 11

    バーコードスキャナーは、ユーザーが入力ボックスを使用している場合にのみ「キープレス」イベントを生成します。ユーザーが入力ボックスを使用していないときに聞くイベントは何ですか?

  12. 12

    コードブロックで値をラップすると、入力した数値がDoubleに変わるのはなぜですか?

  13. 13

    ストリーム入力操作がスキップされるのはなぜですか?

  14. 14

    ユーザー入力なしで文字列のスペルチェックを実行するにはどうすればよいですか?

  15. 15

    光沢のあるアプリで印刷ボタンを作成して、ユーザーがテキストボックスに入力したテキストのハードコピーを印刷するにはどうすればよいですか?

  16. 16

    コードがコードブロックで実行されているのにVSStudioでは実行されていないのはなぜですか

  17. 17

    mainでループが実行されている間にユーザー入力を評価する別のスレッドを実装するにはどうすればよいですか?

  18. 18

    このコードキャッチブロックが実行されないのはなぜですか?

  19. 19

    このコードを実行しているときに、このcコードが入力を受け入れないのはなぜですか。このプログラムは何も入力せずに存在し始めています

  20. 20

    アドレスバーにURLを入力すると、他のプロトコルではなく常に「HTTP」が使用されるのはなぜですか

  21. 21

    ユーザーvagrantがパスワードを入力せずに「sudosu-」を実行できるのはなぜですか?

  22. 22

    jquery-ユーザーがキーアップではなく入力を終了したときにユーザーの入力を出力しますか?

  23. 23

    このユーザーがfgets()に入力すると、プログラムが中止されるのはなぜですか?

  24. 24

    Flutterブロックを使用して、ユーザーが入力したときにその値を別のウィジェットに更新するテキストフィールドを作成するにはどうすればよいですか?

  25. 25

    Cubit LoadedStateのdartでコードが実行されず、スキップされるのはなぜですか?

  26. 26

    Pythonでは、条件が満たされた場合にtry / exceptionブロックを入力する方法はありますか?それ以外の場合は、tryブロックのコードをわかりやすく実行しますか?

  27. 27

    ユーザーがテキストフィールドへの入力を一時停止してからコールバックを実行するまで待機するJSプラグインまたはjQuery関数を探しています

  28. 28

    AutoCompleteTextViewを使用している場合、ユーザーがクリックしてからテキストボックスに回答を入力するまでの間にコードを実行できますか?

  29. 29

    ブートストラップを使用すると、これらのラベルと入力コントロールが同じ行に表示されないのはなぜですか

ホットタグ

アーカイブ