我写了这段代码:
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])();
}
为函数指针。它也为此引发了错误。