gets_s | Programming Place Plus C言語編 標準ライブラリのリファレンス

C言語編 標準ライブラリのリファレンス gets_s

先頭へ戻る

gets_s関数

概要 標準入力から文字列を1行受け取る。
ヘッダ stdio.h
形式 char* gets_s(char* s, rsize_t n);
引数 s 文字列を受け取る配列を指すポインタ。ヌルポインタであってはならない。
n s が指す配列へ書き込み可能な文字数。0 より大きく、RSIZE_MAX以下でなければならない。
戻り値 成功時は引数s がそのまま返される。
ファイルの終わりに到達し、1文字も読み取らなかった場合は、ヌルポインタが返される。また、読み取りエラーの発生時にもヌルポインタを返す。
詳細 標準入力から文字列を受け取る。改行文字を読み取ったとき、あるいは、ファイルの終わりに達したときに読み込みを終える。改行文字を読み取った場合、それは配列に書き込まれない(この点は fgets関数と異なる)。配列に格納された最後の文字の後ろに、ヌル文字('\0') が付加される。
読み取られる文字数は最大で、引数n - 1 文字である。引数s が指す配列には、更に末尾にヌル文字が加わるため、引数 n の値以上の要素数が必要である。
引数n は、0 より大きく、RSIZE_MAX以下でなければならない。この範囲内にない場合、実行時制約への違反となる。この場合、s[0] にヌル文字が書き込まれ、読み込まれた文字列は破棄される。
この関数は、__STDC_LIB_EXT1__ が定義されている処理系でのみ使用できる。また、この関数を使用するのなら、<stdio.h> をインクルードする前に、__STDC_WANT_LIB_EXT1__ という名前のマクロを、置換結果 1 として定義することが作法となっているが、これを行わずとも関数を使用できる処理系もあり得る。
注意
使用例
#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>

int main(void)
{
    char buf[16];

    puts( "何か入力して下さい。" );
    gets_s( buf, sizeof(buf) );
    puts( buf );

    return 0;
}

実行結果:

何か入力して下さい。
abcde
abcde
関連 この関数が定義されていない場合は、fgets関数を検討する。ただし改行文字の扱いが異なることに注意。gets関数は C11規格からは存在しないが、存在していたとしても(過去の規格しかサポートされていない処理系であっても)使ってはならない。
解説章


参考リンク



更新履歴

'2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS