c语言中printf的转义字符,C语言printf与scanf的转义字符?

答案:printf(格式控制,输出表列)

例如:printf("i=%d,ch=%c\n",i,ch);

说明:

(1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息:

①格式说明:由“%”和格式字符组成,它的作用是将输出的数据转换为指定的格式输出。

②普通字符,即需要原样输出的字符。

(2)“输出表列”是需要输出的一些数据,可以是表达式

(3)printf函数的一般形式可以表示为

printf(参数1,参数2,……,参数n)

功能是将参数2~参数n按参数1给定的格式输出

2.格式字符(9种)

(1)d(或i)格式符。用来输出十进制整数,有以下几种用法:

①%d,按整型数据的实际长度输出。

②%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

③%ld(%mld 也可),输出长整型数据。

例如:long a=123456;

printf("%ld",a);

(2)o格式符,以八进制数形式输出整数。格式:%o,%mo,%lo,%mlo都可。

(3)x(或X)格式符,以十六进制数形式输出整数。格式:%x,%mx,%lx,%mlx都可。

(4)u格式符,用来输出unsigned型数据,即无符号数,以十进制数形式输出。格式:%u,%mu,%lu都可。

参见:li4-3.c/*无符号数据的输出*/

(5)c格式符,用来输出一个字符。格式:%c,%mc都可。

(6)s格式符,用来输出一个字符串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。

参见:li4-5.c /*字符串的输出*/

(7)f格式符,用来输出实数(包括单、双精度),以小数形式输出。格式:%f,%m.nf,%-m.nf都可。

注意:单精度实数的有效位数一般为7位,双精度为16位。

参见:li4-6.c/*输出单精度实数时的有效位数*/

li4-7.c/*输出双精度实数时的有效位数*/

li4-8.c/*输出实数时指定小数位数*/

(8)e(或E)格式符,以指数形式输出实数。格式:%e,%m.ne,%-m.ne都可。

(9)g(或G)格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种)。

3.说明

(1)除了X、E、G(用大写字母表示)外,其他格式字符必须用小写字母;

(2)“格式控制”字符串内可以包含转义字符;

(3)如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,如:

printf("%f%%",1.0/3);

scanf()函数是所有C语言学习者在学习C语言过程中所遇到的第二个函数(第一个函数是printf(),Brian W.Kerninghan & Dennis M.Ritchie的“hello,world”程序基本上是所有的C语言学习者第一个范例),所以scanf()函数应当是C学习者能熟练运用的一个函数,但有很多初学者对此函数不能很好的运用,在实际编程中错误使用scanf()函数,导至程序产生某种错误不能正常运行,以至产生“scanf()函数有BUG”,“scanf()函数无用论”等等错误观点。

本文结合笔者在编程实践中及论坛上网友所遇到的问题作一释疑,但笔者水平有限(菜鸟级),难免有谬误之处,还望达人指点一二。(Email:knocker.k@126.com)

本文分上,下两篇讲述了C语言中的scanf()函数的用法,重点阐述使用scanf()函数过程中出现的常见错误及对策。当然,文中某些解决方法,均可以采用其他函数和方法来更好地解决,但本文仅限讨论scanf()函数本身。

上篇,详细介绍了scanf()函数控制串的构成。下篇,用实际例程介绍scanf()函数控制串运用出现的常见错误及对策技巧。

二、 scanf()函数的控制串

函数名: scanf

功 能: 执行格式化输入

用 法: int scanf(char *format[,argument,...]);

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。

其调用格式为: scanf("",);

scanf()函数返回成功赋值的数据项数,出错时则返回EOF。

其控制串由三类字符构成:

1。格式化说明符;

2。空白符;

3。非空白符;

(A) 格式化说明符

格式字符 说明

%a 读入一个浮点值(仅C99有效)

%A 同上

%c 读入一个字符

%d 读入十进制整数

%i 读入十进制,八进制,十六进制整数

%o 读入八进制整数

%x 读入十六进制整数

%X 同上

%c 读入一个字符

%s 读入一个字符串

%f 读入一个浮点数

%F 同上

%e 同上

%E 同上

%g 同上

%G 同上

%p 读入一个指针

%u 读入一个无符号十进制整数

%n 至此已读入值的等价字符数

%[] 扫描字符集合

%% 读%符号

附加格式说明字符表

修饰符 说明

L/l 长度修饰符 输入"长"数据

h 长度修饰符 输入"短"数据

W 整型常数 指定输入数据所占宽度

* 星号 空读一个数据

hh,ll同上h,l但仅对C99有效。

(B) 空白字符

空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

(C) 非空白字符

一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。我直接给你一个简单点的..你看看.

如printf("i=%d,ch=%c\n",i,ch);

意思就是要求输出运算后 10进制数i和字符ch的值...

scanf("%d",&a);

意思就是要求你从键盘输入10进制的数a.

你再结合上面朋友的就更加明白了。楼上的很详细,不过有一些是可以省略的,要看用的什么编译器了转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。

转义字符 意义 ASCII码值(十进制)

\a 响铃(BEL) 007

\b 退格(BS) 008

\f 换页(FF) 012

\n 换行(LF) 010

\r 回车(CR) 013

\t 水平制表(HT) 009

\v 垂直制表(VT) 011

\\ 反斜杠 092

\? 问号字符 063

\' 单引号字符 039

\" 双引号字符 034

\0 空字符(NULL) 000

\ddd 任意字符 三位八进制

\xhh 任意字符 二位十六进制

字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。

在C程序中使用转义字符\ d d d或者\ x h h可以方便灵活地表示任意字符。\ d d d为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制A S C I I码值。\ x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。

使用转义字符时需要注意以下问题:

1) 转义字符中只能使用小写字母,每个转义字符只能看作一个字符。

2) \v 垂直制表和\f 换页符对屏幕没有任何影响,但会影响打印机执行响应操作。

3) 在C程序中,使用不可打印字符时,通常用转义字符表示

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值