我正在努力确保我理解%n的使用方式,并且我有以下非常简单的代码
#include <stdio.h>
int main (void)
{
int c1, c2;
printf("This%n is fun%n\n", &c1, &c2);
}
它应该打印&#34;这很有趣&#34;并存储在c1和c2中打印的字符数。但我得到的所有输出都是字符串&#34; This&#34;。我正在使用MinGw v 4.9.3在Windows10上编译它。
答案 0 :(得分:1)
打印This
后,您的程序崩溃了。
MinGW默认使用Microsoft的Visual C ++运行时。 MSDN说关于“%n”:
因为
%n
格式本质上不安全,所以它被禁用 默认。如果在格式字符串中遇到%n
,则无效 调用参数处理程序,如Parameter Validation中所述。至 启用%n
支持,请参阅_set_printf_count_output
。
默认的无效参数处理程序会中止您的程序。通过_set_printf_count_output(1)
启用或使用-D__USE_MINGW_ANSI_STDIO=1
进行编译以使用它。