[英]why use of %n in printf() is not printing the number of variable occurrence before %n In C?
#include <stdio.h>
int main ()
{
int c;
printf ("the value of %nc :
", &c);
return 0;
}
输出:值 0
根据 C 2018 7.21.6.1 8,对于转换说明符n
:
参数应该是一个指向有符号整数的指针,其中写入了到目前为止通过调用
fprintf
[或printf
] 写入输出流的字符数。...
因此, printf ("the value of %nc : ", &c);
就是把“the value of c :”这个字符写出来输出,把“the value of ”的字符数放入c
,即13个。
对于初学者,您不能使用中间换行符拆分字符串文字。 所以这个电话
printf ("the value of %nc :
", &c);
在语法上无效。 要么写
printf ("the value of %nc : \n ", &c);
或写
printf ("the value of %nc : \n"
"", &c);
在上面的调用中,函数printf
不输出变量c
本身的值。 您需要额外调用printf
来输出变量c
的值。
如果你想在一行中做到这一点,那么你可以像下面的演示程序中看到的那样编写。
#include <stdio.h>
int main(void)
{
int c;
printf( "%d\n", ( printf ("the value of %nc : ", &c ), c ) );
return 0;
}
程序输出是
the value of c : 13
或者,如果您想在输出的字符串文字中包含一个换行符,您可以按以下方式重写调用 pf printf
printf( "%d\n", ( printf ("the value of %nc : \n ", &c ), c ) );
在这种情况下,程序输出将如下所示
the value of c :
13
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.