繁体   English   中英

为什么在 printf() 中使用 %n 不打印 C 中 %n 之前的变量出现次数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM