VS2015 編譯報錯:gets 未定義,改用 gets_s 仍報參數類型錯誤。
gets 因緩衝區溢出風險被 C11 標準移除,MSVC 默認禁用。gets_s 是微軟擴展,需要兩個參數:緩衝區指針和最大讀取字符數。
char buf[100];
// gets_s 兩個參數
gets_s(buf, sizeof(buf)); // ✅
// 推薦標準跨平台 fgets
fgets(buf, sizeof(buf), stdin); // ✅ 自動保留換行符
// 去除換行符
buf[strcspn(buf, "\n")] = '\0';
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 現在可以用 gets(buf),但極不安全
fgets 替代 gets/gets_sstrcspn 或手動判斷