- ベストアンサー
fgets()関数で画面入力
- C言語のfgets()関数を使用して、画面からのユーザー入力を受け取るプログラムです。
- Windows7では正常に動作しますが、CentOSでは入力された値が表示されません。
- 原因は不明ですが、他のコンパイラやエラーも確認されていません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CentOS 6.5にPoderosa 4.3.8bで接続して試しました。 [user@localhost ~]$ ./a.out type your message >>>> 1234 typed : 1234 [user@localhost ~]$ ってコトで正常に動作していますが……。 それなら…と、送信改行コードをCR+LFにしてみました。 [user@localhost ~]$ ./a.out type your message >>>> test typed : [user@localhost ~]$ fgets()の直後に printf("len=%d\n", strlen(msg)); を入れてコンパイル。送信改行コードをCR+LFにして実行してみました。 [user@localhost ~]$ ./a.out type your message >>>> test len=1 typed : [user@localhost ~]$ 送信改行コードをLFに設定し、入力待ちになってから送信改行コードをCR+LFに換えてみました。 [user@localhost ~]$ ./a.out type your message >>>> test len=5 typed : test [user@localhost ~]$ とりあえずの実験結果です。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
CentOS は手元にないので実験できないんだけど, たとえば msg[strlen(msg) - 1] = '\0'; の行を取り除いたらどうなるんでしょうか?
お礼
ありがとうございます、。
補足
typed : の後が改行されます。 こんな風に $ ./promptTest type your message >>>> test typed : $
お礼
凄いです。直りました。 ありがとうございました。
補足
Poderosa 4.1.0を使っています。 改行コードがCR+LFになっていました。 CRまたはLFで実行すると、 正常に結果が返るようになりました。 $ ./promptTest type your message >>>> test typed : test $