这是一个非常简单的代码,我正在尝试运行:
#include <stdio.h>
void main()
{
int x;
printf( "TEST%n", &x );
}
我希望x变得相等4而不是我的致命错误。
我使用Visual Studio 2008和Windows XP。
在执行期间,我会看到"Microsoft Visual Studio C Runtime Library has detected a fatal error..."
的窗口
然后调试器打开带有_CRT_DEBUGGER_HOOK
函数的dbghook.c文件。
请帮助我理解我做错了什么?
答案 0 :(得分:4)
安全说明
%n
格式本质上不安全,默认情况下处于禁用状态;如果在格式字符串中遇到%n
,则调用无效参数处理程序,如Parameter Validation中所述。要启用%n
支持,请参阅_set_printf_count_output
。
答案 1 :(得分:-3)
#include <stdio.h>
void main()
{
int x;
printf("%d\n",x);
}
你使用的printf语法不正确。其他的东西是“&amp;”用于scanf。