🔤 文字列
gcc: warning: implicit declaration of function 'gets'(C23モードのgcc 14以降は error: implicit declaration of function 'gets')、リンク時に warning: the 'gets' function is dangerous and should not be used.。古い入門書を写経すると必ず出会います。
gets は読み込む長さを指定できないため、入力次第で必ずバッファをあふれさせます。危険すぎるという理由でC11で標準から削除された関数です。
fgets(buf, sizeof buf, stdin); に置き換えます。fgets は末尾の改行も読み込むので、buf[strcspn(buf, "\n")] = '\0'; で取り除きます。古い教材のコードは、gets / strcpy / sprintf を見つけたら安全な関数に書き換える、と決めておきます。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。