发布网友 发布时间:2022-04-24 14:41
共3个回答
热心网友 时间:2022-05-21 16:00
%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);//把接收的字符个数赋给t
printf("%s-->You have just entered %d character(s).\n",a,t);
scanf("%d%n",&x,&t);//把接收整型数的字符个数赋给t
printf("%d-->You have just entered %d character(s).\n",x,t);
scanf("%lf%n",&y,&t);//把接收浮点数的字符个数赋给t
printf("%g-->You have just entered %d character(s).\n",y,t);
return 0;
}运行举例如下:
上图中除第一项外后面都多出了1,原因是还接收了一个回车!所以%n操作结果是“接收的字符数”而不是赋给变量的值的字符数——这在使用%n时要注意一下。在printf中的用法与上述类似,把刚刚输出的字符个数赋给对应的变量,如int
x;printf("12345%n\n",&x);printf("%d",x);会打印出12345回车和5来。
热心网友 时间:2022-05-21 16:00
非n,就是非0,因为n=0,非0,就是非非,负负得正,就是如果上面定义成功,就执行(0代表失败,1代表成功);
热心网友 时间:2022-05-21 16:01
%u
十进制无符号整数
%f
浮点数
%s
字符串
%c
单个字符
%p
指针的值
%e
指数形式的浮点数
%x,
%x
无符号以十六进制表示的整数
%0
无符号以八进制表示的整数
%g
自动选择合适的表示法
\n是换行