私はこのコードを書きました:
void f1(void)
{
sprintf("\nf1.");
}
void f2(void)
{
sprintf("\nf2.");
}
void f3(void)
{
sprintf("\nf3.");
}
void f4(void)
{
sprintf("\nf4.");
}
int main()
{
// int i;
void (*f[4])(void);
f[1]=f1;
f[2]=f2;
f[3]=f3;
f[4]=f4;
(*f[1])();
(*f[2])();
(*f[3])();
(*f[4])();
/*for(i=0;i<4;i++)
{
(*f[i])();
}*/
getch();
}
プログラムがコンパイル、実行され、出力が表示されます
f1.
f2.
f3.
f4.
しかし、Enter キーを押すと、「実行時チェックの失敗 #2 - 変数 'f' の周りのスタックが壊れています」という例外がスローされます。
この理由と、snprintf と sprintf をいつ使用するかを説明してください。また、使えない理由を教えてください
for(i=0;i<4;i++)
{
(*f[i])();
}
関数ポインタ用。これについてもエラーをスローしています。