位置の書き込み中の呼び出し/競合に使用されるパラメータが少なすぎる/無効な例外ハンドラルーチンが検出されました
初心者がCを学習する過程で遭遇する可能性があるクラスの問題について
私たちの研究では、この状況によく遭遇します。
#include<stdio.h>
void main()
{
char note[100] = "";
scanf("%s", note, 100);//本行会报错提醒我们使用scanf_s代替scanf
}
サフィックス「_s」が付いた関数の多くは、元の関数をより安全にするためのものです。存在しない要素の引用を避けるために、パラメータに関連する値を渡します。ハッカーは、元のセキュリティを使用してシステムをハッキングすることがあります。例:char note [100]; scanf_s( "%s"、note、100);またはscanf_s( "%s"、note、sizeof(note));と書かれている;正確ですが、精度を向上させるためにこのパラメーター100があります。
3つの一般的な例外を挙げました
- [1]呼び出すにはパラメータが少なすぎる
- [2]場所の書き込み中に競合が発生しました
- [3]無効な例外ハンドラルーチンが検出されました
在处理这三个异常时可以观察代码是否有这样的错误:
//注释内是错误写法
scanf_s("%s", note,100);//缺少参数100 scanf_s("%s", note);
sprintf_s(temp, sizeof(temp) ,"\n收入\t%s\t\t%.2f\t\t%.2f", note, money, blance);
//缺失参数sizeof(temp)sprintf_s (temp, "\n收入\t%s\t\t%.2f\t\t%.2f", note, money, blance);
strcat_s(data,sizeof(data),temp);//同样缺失参数 strcat_s(data,temp);
両方の初心者であるあなたを助けることを願っています。