0

私はこの関数を持っていますが、fgets 関数が正しく動作しません。誰か助けてもらえますか? ケース 3 で、ユーザーにホテルを検索したいものを入力するように求めます。部分的な単語、2 つの単語などです。po を実行すると正しく動作しません。理由がわかりません。

        scanf("%d", &option);


        case 3:
            printf("\nEnter the name of the hotel you want to search for.\n\n>>>");
            fgets(asked_hotel, sizeof(asked_hotel)-1, stdin);

            printf("The hotels matching what you searched are:\n\n");
            find_hotel(hotel_name,hotel_rating,address_name,city_name,address_code,NUM_HOTELS,asked_hotel);
4

2 に答える 2

3

ここでの問題はscanf、オプションを取得するために を使用することです。番号を抽出しますが、バッファに改行を残します。これは、次に呼び出すときにfgetsその改行が読み取られ、空の行が取得されることを意味します。

scanf最も簡単な解決策は、改行を含む末尾の空白をスキップするように依頼することです。これは、フォーマット コードの後に​​スペースを追加することによって行われます。

scanf("%d ", &option);
/*       ^         */
/*       |         */
/* Note space here */
于 2013-07-10T10:53:37.850 に答える