.\" Updated 2005-09-06, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\"
.TH GETS 3 2011-09-28 "GNU" "Linux Programmer's Manual"
-.SH ̾Á°
-fgetc, fgets, getc, getchar, gets, ungetc \- ʸ»ú¤Èʸ»úÎó¤ÎÆþÎÏ
-.SH ½ñ¼°
+.SH 名前
+fgetc, fgets, getc, getchar, gets, ungetc \- 文字と文字列の入力
+.SH 書式
.nf
.B #include <stdio.h>
.sp
.BI "int ungetc(int " c ", FILE *" stream );
.fi
-.SH ÀâÌÀ
+.SH 説明
.BR fgetc ()
-¤Ï¡¢
+は、
.I stream
-¤«¤é¼¡¤Îʸ»ú¤ò
+から次の文字を
.I unsigned char
-¤È¤·¤ÆÆɤߡ¢
+として読み、
.I int
-¤Ë¥¥ã¥¹¥È¤·¤ÆÊÖ¤¹¡£¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤ä¥¨¥é¡¼¤È¤Ê¤Ã¤¿¾ì¹ç¤Ï
+にキャストして返す。ファイルの終わりやエラーとなった場合は
.B EOF
-¤òÊÖ¤¹¡£
+を返す。
.PP
.BR getc ()
-¤Ï
+は
.BR fgetc ()
-¤ÈƱÍͤÀ¤¬¡¢
+と同様だが、
.I stream
-¤òÊ£¿ô²óɾ²Á¤¹¤ë¥Þ¥¯¥í¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
+を複数回評価するマクロとして実装されているかもしれない。
.PP
.BR getchar ()
-¤Ï
+は
.BI "getc(" stdin ) \fR
-¤ÈƱ¤¸¤Ç¤¢¤ë¡£
+と同じである。
.PP
.BR gets ()
-¤Ï¡¢²þ¹Ôʸ»ú¤«
+は、改行文字か
.B EOF
-¤Þ¤Ç¤Î 1¹Ô¤ò
+までの 1行を
.I stdin
-¤«¤éÆɤ߹þ¤ß
+から読み込み
.I s
-¤¬»Ø¤¹¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤¹¤ë
-(ËöÈø¤Î²þ¹Ôʸ»ú¤ä
+が指すバッファに格納する
+(末尾の改行文字や
.B EOF
-¤Ï NULL ¥Ð¥¤¥È (\(aq\e0\(aq) ¤ËÃÖ¤´¹¤¨¤é¤ì¤ë)¡£
-¥Ð¥Ã¥Õ¥¡¡¦¥ª¡¼¥Ð¡¼¥é¥ó¤Î¥Á¥§¥Ã¥¯¤Ï¹Ô¤ï¤ì¤Ê¤¤ (²¼µ¤Î¡Ö¥Ð¥°¡×¤ò»²¾È)¡£
+は NULL バイト (\(aq\e0\(aq) に置き換えられる)。
+バッファ・オーバーランのチェックは行われない (下記の「バグ」を参照)。
.PP
.BR fgets ()
-¤Ï
+は
.I stream
-¤«¤éºÇÂç¤Ç
+から最大で
.IR size " - 1"
-¸Ä¤Îʸ»ú¤òÆɤ߹þ¤ß¡¢
+個の文字を読み込み、
.I s
-¤¬»Ø¤¹¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤¹¤ë¡£Æɤ߹þ¤ß¤Ï
+が指すバッファに格納する。読み込みは
.B EOF
-¤Þ¤¿¤Ï²þ¹Ôʸ»ú¤òÆɤ߹þ¤ó¤À¸å¤ÇÄä»ß¤¹¤ë¡£
-Æɤ߹þ¤Þ¤ì¤¿²þ¹Ôʸ»ú¤Ï¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤µ¤ì¤ë¡£
-½ªÃ¼¤Î NULL ¥Ð¥¤¥È (\(aq\e0\(aq)
-¤¬°ì¤Ä¥Ð¥Ã¥Õ¥¡¤ÎÃæ¤ÎºÇ¸å¤Îʸ»ú¤Î¸å¤Ë½ñ¤¹þ¤Þ¤ì¤ë¡£
+または改行文字を読み込んだ後で停止する。
+読み込まれた改行文字はバッファに格納される。
+終端の NULL バイト (\(aq\e0\(aq)
+が一つバッファの中の最後の文字の後に書き込まれる。
.PP
.BR ungetc ()
-¤Ï¡¢¸å¤Î read Áàºî¤ÇÆɤá¤ë¤è¤¦¤Ë¡¢
+は、後の read 操作で読めるように、
.I c
-¤ò
+を
.I "unsigned char"
-¤Ë¥¥ã¥¹¥È¤·¤Æ
+にキャストして
.I stream
-¤Ë½ñ¤Ì᤹¡£
-½ñ¤Ìᤵ¤ì¤¿Ê¸»ú¤ÏµÕ½ç¤ËÌᤵ¤ì¤ë;
-½ñ¤Ìᤷ¤È¤·¤ÆÊݾڤµ¤ì¤Æ¤¤¤ë¤Î¤Ï¡¢°ìʸ»ú¤À¤±¤Ç¤¢¤ë¡£
+に書き戻す。
+書き戻された文字は逆順に戻される;
+書き戻しとして保証されているのは、一文字だけである。
.PP
-¤³¤³¤Ç½Ò¤Ù¤¿´Ø¿ô¤ä
+ここで述べた関数や
.I stdio
-¥é¥¤¥Ö¥é¥ê¤ÎÆþÎÏ´Ø¿ô¤òƱ¤¸ÆþÎÏ¥¹¥È¥ê¡¼¥à¤ËÂФ·¤Æ¸ß¤¤¤Ëº®¤¼¤Æ»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
+ライブラリの入力関数を同じ入力ストリームに対して互いに混ぜて使うことができる。
.PP
-¤³¤ì¤é¤Î½èÍý¤ò¥í¥Ã¥¯¤»¤º¤Ë¹Ô¤¤¤¿¤¤¤È¤¤Ï¡¢
+これらの処理をロックせずに行いたいときは、
.BR unlocked_stdio (3)
-¤ò»²¾È¤Î¤³¤È¡£
-.SH ÊÖ¤êÃÍ
+を参照のこと。
+.SH 返り値
.BR fgetc (),
.BR getc (),
.BR getchar ()
-¤Ï¡¢Ê¸»ú¤ò
+は、文字を
.I unsigned char
-¤È¤·¤ÆÆɤó¤Ç
+として読んで
.I int
-¤Ë¥¥ã¥¹¥È¤·¤ÆÊÖ¤¹¡£¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤ä¥¨¥é¡¼¤Î¾ì¹ç¤Ï
+にキャストして返す。ファイルの終わりやエラーの場合は
.B EOF
-¤òÊÖ¤¹¡£
+を返す。
.PP
.BR gets ()
-¤È
+と
.BR fgets ()
-¤Ï¡¢À®¸ù¤¹¤ë¤È
+は、成功すると
.I s
-¤òÊÖ¤·¡¢¥¨¥é¡¼¤ä 1 ʸ»ú¤âÆɤ߹þ¤ó¤Ç¤¤¤Ê¤¤¤Î¤Ë¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Ë¤Ê¤Ã¤¿
-¾ì¹ç¤Ë NULL ¤òÊÖ¤¹¡£
+を返し、エラーや 1 文字も読み込んでいないのにファイルの終わりになった
+場合に NULL を返す。
.PP
.BR ungetc ()
-¤ÏÀ®¸ù¤¹¤ë¤È
+は成功すると
.I c
-¤òÊÖ¤·¡¢¥¨¥é¡¼¤Î¾ì¹ç¤Ï
+を返し、エラーの場合は
.B EOF
-¤òÊÖ¤¹¡£
-.SH ½àµò
+を返す。
+.SH 準拠
C89, C99, POSIX.1-2001.
-LSB ¤Ç¤Ï
+LSB では
.BR gets ()
-¤ÏÈó¿ä¾©¤Ç¤¢¤ë¡£
-POSIX.1-2008 ¤Ç¤Ï
+は非推奨である。
+POSIX.1-2008 では
.BR gets ()
-¤ÏÇÑ»ßͽÄê¤Ç¤¢¤ë¤È¤µ¤ì¤Æ¤¤¤ë¡£
-.SH ¥Ð¥°
+は廃止予定であるとされている。
+.SH ã\83\90ã\82°
.BR gets ()
-¤ÏÀäÂФ˻ÈÍѤ·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
-Á°¤â¤Ã¤Æ¥Ç¡¼¥¿¤òÃΤ뤳¤È¤Ê¤·¤Ë
+は絶対に使用してはならない。
+前もってデータを知ることなしに
.BR gets ()
-¤¬²¿Ê¸»úÆɤफ¤òÃΤ뤳¤È¤Ï¤Ç¤¤º¡¢
+が何文字読むかを知ることはできず、
.BR gets ()
-¤¬¥Ð¥Ã¥Õ¥¡¤Î½ª¤ï¤ê¤ò±Û¤¨¤Æ½ñ¤¹þ¤ß³¤±¤ë¤¿¤á¡¢
+がバッファの終わりを越えて書き込み続けるため、
.BR gets ()
-¤ò»È¤¦¤Î¤Ï¶Ë¤á¤Æ´í¸±¤Ç¤¢¤ë¡£
-¤³¤ì¤òÍøÍѤ·¤Æ¥³¥ó¥Ô¥å¡¼¥¿¤Î¥»¥¥å¥ê¥Æ¥£¤¬Çˤé¤ì¤Æ¤¤¿¡£
-Âå¤ï¤ê¤Ë
+を使うのは極めて危険である。
+これを利用してコンピュータのセキュリティが破られてきた。
+代わりに
.BR fgets ()
-¤ò»È¤¦¤³¤È¡£
+を使うこと。
.PP
-ÆþÎÏ¥¹¥È¥ê¡¼¥à¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ËÂФ·¤Æ¡¢
+入力ストリームのファイルディスクリプタに対して、
.I stdio
-¥é¥¤¥Ö¥é¥ê¤ÎÆþÎÏ´Ø¿ô¤È¡¢Äã¥ì¥Ù¥ë¸Æ¤Ó½Ð¤·¤Î
+ライブラリの入力関数と、低レベル呼び出しの
.BR read (2)
-¤òº®¤¼¤Æ¸Æ¤Ó½Ð¤¹»ö¤Ï´«¤á¤é¤ì¤Ê¤¤¡£
-·ë²Ì¤¬¤É¤¦¤Ê¤ë¤«¤Ïʬ¤«¤é¤º¡¢¤ª¤½¤é¤¯¤¢¤Ê¤¿¤Î
-˾¤ó¤Ç¤¤¤ë·ë²Ì¤Ë¤Ï¤Ê¤é¤Ê¤¤¤À¤í¤¦¡£
-.SH ´ØÏ¢¹àÌÜ
+を混ぜて呼び出す事は勧められない。
+結果がどうなるかは分からず、おそらくあなたの
+望んでいる結果にはならないだろう。
+.SH 関連項目
.BR read (2),
.BR write (2),
.BR ferror (3),