C printf、scanf 和格式转换(控制、占位)符 您所在的位置:网站首页 scanf作用和格式 C printf、scanf 和格式转换(控制、占位)符

C printf、scanf 和格式转换(控制、占位)符

2023-10-22 08:38| 来源: 网络整理| 查看: 265

在程序中要使用输入输出函数(printf 和 scanf),就必须要包含 stdio.h 头文件。

一、格式转换符 整型 控制符说明 %d 或 i% 有符号十进制整型(int、short、char) %hd 短整型 %ld 长整型 %lld 或 %l64d 64 位整型 %u 无符号十进制整型(unsigned) %o 无符号八进制整型 %x 或 %X 无符号十六进制整型,x 小写对应的十六进制为小写,X 大写对应大写 实型

G/E 格式表示的指数形式中 E 大写

控制符说明 %f 十进制单精度浮点数(float),默认小数部分超过 6 位的四舍五入 %lf 小数形式双精度实型 %e 或 %E 指数形式单精度实型,le 同理 %g 或 %G 系统自动选定 f 或 e 格式,使输出的宽度最小,且不输出无意义的 0 字符型 控制符说明 %c 一个字符 %s 字符串 其他 控制符说明 %md m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出 %.mf 输出实数时小数点后保留 m 位,注意 m 前面有个点 %p 指针 %% 输出 %

另外可以在格式转换字符和 % 之间插入一些辅助的格式控制字符

# [] 表示可以省略 格式:%[flag][width][.precision][size]Type

width 和 precision 必须是无符号整数

 

二、printf

格式控制字符的个数要与实际输出的个数相等,多出的格式控制符会随机输出

printf("%d\t%d", 100); // 100 1378561

输出时表达式的计算是从右往左

int i = 1; printf("%d, %d, %d\n", i, i + 1, i = 3); // 3, 4, 3

格式转换符所表示类型和表达式的实际数据类型不同时,printf 函数不会对数据类型自动转换

 

有符号整数 # [] 表示可以省略 格式:%[-][+][0][width][.precision][l][h]d -:左对齐,默认右对齐 +:正数前加 "+" 0:右对齐,实际宽度 < width,左补零 width:最小宽度,实际宽度超过 width,则按照实际宽度输出 .precision:至少输出位数。若实际的位数 > .precision,按实际输出,否者左边补零 l:输出长整型(long) h:输出短整型(short)

 

无符号整数 # [] 表示可以省略 # | 表示互斥 格式:%[-][#][0][width][.precision][l][h]u|o|x|X -:左对齐,默认右对齐 #:以八进制(%o)输出时,在数字前输出 0,以十六进制(%x 或 %X)输出时,在数字前输出 0x 或 0X 0:右对齐,实际宽度 < width,左补零 width:最小宽度,实际宽度超过 width,则按照实际宽度输出 .precision:至少输出位数(VC 下不包含 0x 或 0X 所占位数)。若实际的位数 > .precision,按实际输出,否者左边补零 l:输出长整型(long) h:输出短整型(short)

 

实数 # [] 表示可以省略 # | 表示互斥 格式:%[-][+][#][0][width][.precision][l|L]f|e|E|g|G -:左对齐,默认右对齐 +:正数前加 "+" #:必须输出小数点 0:右对齐,实际宽度 < width,左补零 width:最小宽度,实际宽度超过 width,则按照实际宽度输出 .precision:规定输出实数时,小数部分的位数(四舍五入) l:输出 double 型(默认也是输出 double 型) L:输出 long double 型

 

字符和字符串 # [] 表示可以省略 字符格式:%[-][0][width]c 字符串格式:%[-][0][width][.precision]s -:左对齐,默认右对齐 0:右对齐,实际宽度 < width,左补零 width:最小宽度,实际宽度超过 width,则按照实际宽度输出 .precision:只输出字符串前 precision 个字符

 

三、scanf &:取地址运算符,只能作用于变量,不能作用于表达式 # [] 表示可以省略 # | 表示互斥 格式:%[*][width][l|h]Type *:抑制符,输入的数据不会赋值给相应的变量 width:指定输入数据的域宽,遇空格或不可转义的字符则结束 l:用于 d、u、o、x|X 前,指定输入为 long 型整数,用于 e|E、f 前,指定输入为 double 型实数 h:用于 d、u、o、x|X 前,指定输入为 short 型整数 Type:各种格式转换符

指定域宽时,输入的多余部分会被舍弃

一个数据输入结束:空格、回车、Tab、域宽结束、非法输入(%d,输入 12a3,则值为 12)

非法输入会影响后面输入,导致数据输入失败(d%,d%,输入12a34,b 的值无法预测,正确应输入 12,34)

使用 %c 录入字符数据时,空格和转义字符均作为有效字符被输入

 

四、字符数据的非格式化输入输出 输入 getchar() 接受一个字符输入,以回车结束,回显 stdio.h getc(FILE *stream) 从输入流中接受一个字符,以回车结束,回显 stdio.h getche() 接受一个字符输入,输入字符后就结束,回显 conio.h getch() 接受一个字符输入,输入字符后就结束,不回显 conio.h 输出 int putchar(int c) 输出形参 c 所表示的(ASCII)字符,出错返回 EOF(-1) stdio.h int putc(int c, FILE *stream) 将形参 c 所表示的字符输出到文件流 stream,如果流为 stdout 则功能与 putchar 完全相同 stdio.h int puts(char *string) 输出形参 string 所代表的字符,然后自动回车换行 stdio.h

int fflush(FILE *stream)

更新缓冲区,强迫将缓冲区内的数据写回参数 stream 指定的文件中,如果参数 stream 为 NULL,则将所有打开的文件数据更新

参数流为 stdin 时,刷新缓冲区,把缓冲区里面的内容丢掉

参数流为 stdout 时,刷新缓冲区,把缓冲里面的内容输出到设备

https://zh.wikipedia.org/wiki/Stdio.h

https://dxoca.cn/StudyNotes/281.html

https://fishc.com.cn/thread-66471-1-1.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有