c primer plus(第六版) - 4 字符串和格式化输入输出

<string.h> // 提供strlen()函数原型

C语言没有字符串类型,只能使用char数组来存储字符串!

‘\0’:称为空字符(null character)。空字符不是数字0,它是非打印字符,问:它的ASCII编码值是多少?0。啊,原来ASCII的第一个字符,是字符串结尾的’\0’

scanf遇到空格后,就不会读取输入。如果要读取空格,用fgets()代替?注意,有s。有fget()吗?

printf sizeof的值,还需要用%zd

limit.hfloat.h提供的是整数和浮点数的大小限制信息。

查询:limits.h中查找基本数据类型的取值范围P99,同理,float.h中也有最少有效位等信息。都是用的#define!!!

查询:P101,转换说明表,%a, %d…

%和转换字符之间插入修饰符可修饰基本的转换说明。

查询:P103printf的修饰符,如%4d%hd

冷知识:ptrdiff_t类型(两个指针差值类型,没用过)和t修饰符。

float参数的转换:

没有float类型的转换说明!float会被自动转换为double类型。

查询:P104printf标记的详细说明表

%d%f这些转换说明的意义是什么?它们把以二进制格式存储在计算机中的值转换成一系列字符。76被存储为01001100%d将其将其转换为字符76,并显示76

%d可以解释为“把给定的值翻译成十进制整数文本并打印出来”

以前有注意过printf()的返回值吗?

正常返回打印字符的个数,如果输出错误,返回一个负值。写入文件时常用?(现在讲的都是写入到terminal),例如,一张已满的DVD拒绝写入,蜂鸣30s;一个文件拒绝写入,返回负值,采取相应措施。

C语言有多个输入函数(都有哪些,为什么要这么多个?),scanf是最通用的一个。

从键盘输入的都是文本,因为键盘只能生成文本字符。要输入整数2014,就要一次输入2/0/1/4字符,scanf再将其转换成数值。

查询P113scanf()常用的转换说明%c, %p以及修饰符*h等。是否和前面的表格重复?

scanf%s,会读取空白字符以外的所有字符。

出现了,其它的输入函数getchar()fgets(),这个fgets中的f,会让人以为是file

问题:scanf不是遇到空白就退出的吗?为什么最后这一行没问题?scanf会跳过整数(我理解为数字)前面的空白。(试试其它)

scanf需要一个数字,用户却输入一个非数字字符串,scanf返回0(不像printf返回非负)。

scanf检测到“文件结尾”,返回EOFEOF定义在stdio.h中,一般定义为-1.

冷知识:*修饰符,先跳过

printf打印对齐:可以使用类似%9d

冷知识:有些地方(例如法国、荷兰)的小数不是用“.”,而是用“,”。33,33,3其实是33.33.3

查询:附录B参考资料V介绍C支持的本地化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值