1

私のプログラムの次のコードでは:

do
    {
        printf("\nEnter records of student %d: \n", i++);
        printf("Name: ");
        fgets(record.name, sizeof(record.name), stdin);
        printf("\nAddress: ");
        fgets(record.address, sizeof(record.address), stdin);
        printf("\nClass Level: ");
        scanf("%d", &record.classlevel);
        printf("\nTelephone Number: ");
        scanf("%ld",&record.telephone);
        fwrite(&record, sizeof(record),1,fptr);
        printf("\n\nAdd another record? [y/n]: ");


    }while(getche()=='y');

出力を見ると、初めて正常に動作します

生徒1の記録を入力

名前: <なんらかの入力>

住所: <何らかの入力>

クラス レベル: <なんらかの入力>

電話番号: <何らかの入力>

別のレコードを追加しますか? [y/n]: <Yを押した>

学生の記録を入力 2

名前: <カーソルが来ない、ここに入力できない>

住所: <ここでのみ入力可能>

.

.

……など……

何が起こっているのか、do...while ループの最初の反復後に名前を入力できないのはなぜですか。getche() は何か問題を起こしていますか?

あなたの助けを願っています

前もって感謝します

4

1 に答える 1

1

入力バッファに改行を残すためfflush(stdin)、最初に行う必要があります。do{...}whilegetche()

于 2012-11-23T16:50:06.093 に答える