%n是输入格式化控制字符,用在scanf或类似的sscanf、fscanf等函数中,意思是把刚刚接收的数据的“字符个数”赋给对应的变量。下面代码可帮助理解:#include "stdio.h"int main(int argc,char *argv[]){char a[20];int x,t;double y;scanf("%s%n",a,&t);//把接收的字符个数赋给tprintf("%s-->You have just entered %d character(s).\n",a,t);scanf("%d%n",&x,&t);//把接收整型数的字符个数赋给tprintf("%d-->You have just entered %d character(s).\n",x,t);scanf("%lf%n",&y,&t);//把接收浮点数的字符个数赋给tprintf("%g-->You have just entered %d character(s).\n",y,t);return 0;}运行举例如下:上图中除第一项外后面都多出了1,原因是还接收了一个回车!所以%n操作结果是“接收的字符数”而不是赋给变量的值的字符数——这在使用%n时要注意一下。在printf中的用法与上述类似,把刚刚输出的字符个数赋给对应的变量,如intx;printf("12345%n\n",&x);printf("%d",x);会打印出12345回车和5来。
标签:C语言,--