0

キーボードからテキストを入力し、入力をファイルに保存したい。

これは私が試したコードです:

    char txt[1024];
        char nomFichier[50];
        char emp[100];
        char empEtNomFichier[150];
        printf("\nDonner le nom du fichier : ");
        scanf("%s", &nomFichier);
        printf("\nDonner l'emplacement du fichier : ");
        scanf("%s", &emp);
            snprintf(empEtNomFichier, sizeof(empEtNomFichier), "%s/%s", emp, nomFichier);
            fichier = fopen(empEtNomFichier,"a+");
            printf(empEtNomFichier);
            printf("\nEnter le text : ");
            while(!feof(stdin)) {
                fgets(txt, 1024, stdin);
                printf(stdin);
            if(strlen(txt) == 0) break;
            fputs(txt, fichier);
}

printf("End.");

問題は、ユーザーが入力を終了したことです。入力をスキップして「End」を表示したいのです。while ループの後のメッセージ。

4

2 に答える 2

1

簡単な答え: Ctrl+D 文字 (*n*x) または Ctrl+Z 文字 (Windows) (Windows) のみを含む行は、入力を終了し、feof(stdin) がゼロ以外の値を返すようにする必要があります。

長い答え: これは基本的な考え方ですが、氷山の目に見える部分です。テキスト入力に関して、コードにいくつかのエラーが含まれています。大きなものも小さなものもあります。

于 2013-10-02T13:12:56.407 に答える
1

ユーザーが終了したことをどのように知ることができますか?

投稿したコードは、ユーザーが を押すまで続きますCtrl+d。これにより、ファイルの終わりが入力ストリームに送信されます。

fgets改行を格納するため、改行のみtxtが含まれているかどうかを確認する必要があります。

于 2013-10-02T13:13:38.550 に答える