0

一度に 1 文字ずつ読み取るクラスのプログラムを C で作成する必要があり、scanf を使用する必要があります。キーボードからの入力のみで機能するようになりましたが、先生はファイルリダイレクトでもコードをテストします。

int end;                                    //return value of scanf
int length1;                                //length of string exp1
char temp,                                  //temp char for input
char exp1[81];                              //string

printf ("Please enter in a regular expression:\n");
end = scanf ("%c", &temp);

while (temp != '\n' || end == 1) {          //check if end of input
   length1 = check(temp, length1, exp1);    //returns length of exp1

   end = scanf ("%c", &temp);               //scan next char for loop
}

私はこの小さな問題を何時間も理解しようとしてきたので、どんな指針も役に立ちます。ありがとう!

編集: if ステートメントで kbhit() 関数を使用して、入力を入力したかどうか、または入力がファイルからのものかどうかを確認しようとしました。しかし、私はconio.hを持っていません.scanfを使用している間に代替手段はありますか?

4

3 に答える 3

1

scanf 出力を比較する必要がありますEOF

while(scanf("%c", &temp) != EOF)
{
}

これを次のように変換できます。

do{          

   length1 = check(temp, length1, exp1);    //returns length of exp1

   end = scanf ("%c", &temp);               //scan next char for loop

}while (temp != '\n' && end != EOF) ;
于 2013-09-27T07:25:51.280 に答える