2

リダイレクトされたファイルをコンソールからプログラムに正常に読み取った後、ユーザーに単語を入力するように求め、次に scanf() を使用してその単語を読み取ります。

私が抱えている問題は、 scanf() がすぐにジャンク文字を読み取ってから、プログラムが続行することです。ユーザーがコンソールに何かを入力できるようにするために一時停止することさえありません。ファイルを開かないときは発生しません。他のすべては完全に機能します。何が問題になる可能性がありますか:

**提案されたすべてを試しましたが、まだ機能しません。この部分を機能させるためだけの新しいプロジェクトを作成しました。単語を要求しても、scanf が 1 文字しか検索しないことは無視してください。プログラムが実際に一時停止して何かを入力できるかどうかを確認するためにこれを行いましたが、そうではありません。ゴミを入力するだけで、プログラムは終了します。

 main(){

       int n,i;
       char ch;
       char line[80];

       while(fgets(line, 80, stdin) != NULL){
         for(i=0;i<80;i++){
            ch=line[i];
            if(ch=='\n'){
                printf("%c",ch);
                break;
            }
            else{
                    printf("%c",ch);
            }
         }
       }
       printf("Please enter a word: ");
       scanf("%c",&ch);
    }
4

2 に答える 2

0

sscanf はストリームまたはバッファからの入力に使用され、UNIX では stdin はファイルと見なされるため、ファイルから入力する fscanf を使用することになっているため、fscanf(stdin,"%s",testword); を使用します。

于 2013-10-04T05:02:14.530 に答える