VS 編譯器默認啟用安全檢查,認為 scanf 不安全(緩衝區溢出風險),要求使用 scanf_s 或定義宏 _CRT_SECURE_NO_DEPRECATE 抑制警告/錯誤。

_CRT_SECURE_NO_DEPRECATE。scanf_s 需為每個 %c、%s、%[ 格式指定符提供緩衝區大小參數。
// 原代碼
scanf("%d,%d", &a, &d);
// 修正為 scanf_s(%d 不需緩衝區大小,但微軟文檔建議統一加上)
scanf_s("%d,%d", &a, &d); // 實際上 %d 不需要大小參數,直接這樣寫即可
// 若讀取字符串:
char buf[20];
scanf_s("%19s", buf, (unsigned)_countof(buf)); // 必須指定最大讀取長度
注意:原帖給出的 scanf_s("%d,%d",1,&a,1,&d) 寫法錯誤(多傳了兩個 1),%d 對應 int* 只需傳地址。
scanf_s 或 C++ 流(std::cin)。#ifdef _MSC_VER 區分調用。