隨筆3——scanf與scanf_s
阿新 • • 發佈:2020-12-16
VS2019xxx.dll處引發異常,寫入位置xxxxx時發生訪問衝突
如下圖中的類似問題,在我最近寫程式中遇到了好多次,為了解決scanf()在讀取時不檢查邊界的問題,vs中使用scanf()編譯時沒有錯誤,而除錯時會報如下圖類似錯誤。
解決辦法:
1.在不涉及字串的情況下,若使用scanf(),則直接開頭新增巨集定義即可。
#define _CRT_SECURE_NO_DEPRECATE
2.若涉及字串,使用scanf_s時,要在函式實參後面加上邊界限制,邊界大小根據字串大小而定,可大不可小。
如:
scanf_s("%s" , &stu[count].num,15);
scanf_s("%d%d%d%d%d", &stu[count].math, &stu[count].yy, &stu[count].dl, &stu[count].cyy, &stu[count].ty,45);