アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

以下のCソースは、
画面からのユーザの入力を待って、
入力された値を画面に表示させるように作っています。

Windows7で動かすとちゃんと入力した値を画面に表示するのですが、
CentOSで動かすと入力した値が画面に表示されません。

[ソース]
#include <stdio.h>
#include <string.h>
int main(){
char msg[32];
printf("type your message >>>>\t");
fgets(msg,sizeof(msg),stdin);
msg[strlen(msg) - 1] = '\0';
printf("typed : %s\n",msg);
return 0;
}

[Windowsでの結果]
C:>promptTest
type your message >>>> test
typed : test

C:>

[CentOSでの結果]
$ ./promptTest
type your message >>>> test

typed :
$


原因がまったく見当つかないのですが、
どなたか、おわかりになりますか?

gccでコンパイルしていますが、
いずれも、エラー、ワーニングは出ていません。


よろしくお願いします。

A 回答 (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 ~]$


とりあえずの実験結果です。

この回答への補足

Poderosa 4.1.0を使っています。

改行コードがCR+LFになっていました。

CRまたはLFで実行すると、
正常に結果が返るようになりました。

$ ./promptTest
type your message >>>> test
typed : test
$

補足日時:2014/03/13 09:22
    • good
    • 0
この回答へのお礼

凄いです。直りました。

ありがとうございました。

お礼日時:2014/03/13 09:22

CentOS は手元にないので実験できないんだけど, たとえば


msg[strlen(msg) - 1] = '\0';
の行を取り除いたらどうなるんでしょうか?

この回答への補足

typed : の後が改行されます。
こんな風に

$ ./promptTest
type your message >>>> test

typed :

$

補足日時:2014/03/12 13:17
    • good
    • 0
この回答へのお礼

ありがとうございます、。

お礼日時:2014/03/12 13:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!