gets()は、標準入力から文字列をプログラムに読み込みます。
#include <stdio.h>
char *gets(char *buf);
sは読み込んだ文字列を保存するための文字列バッファのポインタです。
gets()は、標準入力(stdin、典型的にはキーボード)から文字列を読み出し、バッファsに保存します。 成功したときはバッファを指すポインタが返され、ファイルの終わりを検出したかエラーの場合はNULLが返されます。
文字列の最後の改行は'\0'に置き換えられます。読み込み文字列の長さはチェックされないので、バッファより長い文字列を読み込む可能性があり、そのときの動作は保証されません。
読み込み文字列の長さがチェックされないことを利用して本来アクセスすべきでないメモリにアクセスしてセキュリティーに重大な影響を与える可能性もあります。 そのため、バッファの長さより長い文字列を読み込む可能性がある場合やセキュリティーの問題が重要な場合は、fgets()を使うべきです。
gets()は読み込む文字数がバッファの長さを超える可能性があることを除いて、fgets(s, n , stdin)はgets(s)と同じです。
次の例では、名前を文字列として読み込んで出力します。
#include <stdio.h>
#include <locale.h>
int main(int argc, char *argv[])
{
char urname[256];
printf("名前は?>");
gets(urname);
printf("Hello %s! 元気でやってるかい?\n", urname);
return 0;
}