C言語関係掲示板

過去ログ

No.538.fgets()で指定より多くの文字数を入力した場合

[戻る] [ホームページ]
No.4464

fgets()について
投稿者---かいと(2003/01/19 00:00:58)


入力関数のfgets()について質問なのですが、
scanf()を使って文字列を入力して、入りきらなかった文字はキーバッファに
残っていますが、fgets()の場合は指定した第二引数より多くの文字数を入力
した場合、残りの文字はscanf()のようにキーバッファに残っているのでしょうか?

一応、試してみたんですがその時は残っていないようでしが・・・
実際のところ、どうなんでしょうか?

No.4473

Re:fgets()について
投稿者---ともじ(2003/01/19 13:08:53)


こんにちは。

>scanf()を使って文字列を入力して、入りきらなかった文字はキーバッファに
>残っていますが、fgets()の場合は指定した第二引数より多くの文字数を入力
>した場合、残りの文字はscanf()のようにキーバッファに残っているのでしょうか?

下記の例のように、fgetsも指定バイト数より多い入力は、入力バッファに残ります。
#include <stdio.h>

int main(void)
{
	char s1[6], s2[6], s3[6], s4[6];
	
	fgets(s1, 6, stdin);
	fgets(s2, 6, stdin);
	scanf("%5s", s3);
	scanf("%5s", s4);
	
	printf("s1 = %s\n", s1);
	printf("s2 = %s\n", s2);	
	printf("s3 = %s\n", s3);	
	printf("s4 = %s\n", s4);
	
	return 0;
}

実行結果例(太字はキー入力)
0123456789abcdefghij
s1 = 01234
s2 = 56789
s3 = abcde
s4 = fghij


No.4474

Re:fgets()について
投稿者---かいと(2003/01/19 15:06:40)


なるほど。fgets()もscanf()と同じように入りきらなかった文字は、
キーバッファに残っているのですね。
と言うことは、私が試してみたのはどこか間違っていたのですね・・・^^;

聞かないとずっと間違って覚えているところでした。
聞いてみてよかったです。
ともじさん、ソースまで使って説明していただいてありがとうございました。