我寫了這個代碼:爲什麼該異常聲明「運行時檢查失敗#2 - 堆棧變量'f'被損壞。」扔在這裏?
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.
但是當我按下回車鍵,拋出異常,指出「運行時檢查失敗# 2 - 圍繞變量'f'的堆棧已損壞。「
請向我解釋原因,以及何時使用snprintf和sprintf。 另外,讓我知道爲什麼我不能使用
for(i=0;i<4;i++)
{
(*f[i])();
}
函數指針。這也是一個錯誤。
備註:'sprintf'做的事情完全不同於你想象的。你想使用'printf'。另見http://en.cppreference.com/w/c/io/fprintf – Zeta 2013-03-07 21:05:14