dポイントプレゼントキャンペーン実施中!

mingw gccを使用していて、試せる環境が無いので教えて下さい。
Visual Cでfgets()でchar型配列にテキストを読ませた場合に、改行コードは配列変数にどの様に書きこまれるのでしょうか?
 例:下記プログラムで abc{Enter} と入力した場合

0x0aですか? それとも0x0d,0x0aの並びになるのでしょうか?

お手数ですが宜しくお願いします。
------
#include <stdio.h>
#define SIZE 64

int main(void){
char buf[SIZE];
int i;

printf("input : ");
fgets(buf, SIZE, stdin);

for(i = 0; buf[i] != '\0'; i++)
printf("%02X ", buf[i]);
printf("\n");

return 0;
}

A 回答 (2件)

キーボード入力の場合 LF (0x0a) のみです。


ただし、ファイルを読む場合はファイル内の改行コードは、そのまま読み取られます。
CR,LF ならそのまま CR,LF です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
ファイルから読む場合は、gccの場合と動作が異なりますね。
0x0dがある前提でプログラムを書く様にしたいと思います。

お礼日時:2016/07/16 12:07

https://msdn.microsoft.com/ja-jp/library/ktss1a9 …
> stdin、stdoutと stderr のストリームは、テキスト モードで既定で開きます

(_setmode等で変更していない限りでは)stdinからの読み込みは、(ファイルやプロセスにリダイレクトされていても)入力の \r\n は \n に変換されます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
標準入力から読む場合は、0x0aに変換されるのですね。
msdnのリンクのご提示もありがとうございました。

お礼日時:2016/07/16 12:09

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