呼び出しに使用するパラメータが少なすぎたり、書き込み位置で競合が発生したり、無効な例外ハンドラインスタンスが検出されたりします.

3271 ワード

呼び出しに使用するパラメータが少なすぎたり、書き込み位置で競合が発生したり、無効な例外ハンドラインスタンスが検出されたりします.
新人学Cの過程で出会う可能性のある問題に対して
私たちは勉強の中でよくこのような状況に遭遇します.
#include
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) ,"
    \t%s\t\t%.2f\t\t%.2f"
    , note, money, blance); // sizeof(temp)sprintf_s (temp, "
    \t%s\t\t%.2f\t\t%.2f", note, money, blance);
    strcat_s(data,sizeof(data),temp);// strcat_s(data,temp);

    同じ初心者のあなたに役に立つことを願っています.