10、标准 I/O 库与文件系统详解

标准 I/O 库与文件系统详解

1. 标准 I/O 库的格式化输入输出注意事项

在标准 I/O 库中,使用 “%s” 进行转换时,字段宽度的使用可能与预期不同。很多程序员认为 “%12s” 会读取字符串的前 12 个字符,而不管字符串的实际长度。但实际上,“%s” 只将空白字符视为字段终止符,所以并非如此。若要实现读取指定长度字符的需求,应使用 “%12c”,不过要注意 “%c” 不会添加终止空字符。

此外,还可以使用星号字符(‘*’)代替字段宽度。与 printf 中的星号(用于指示字段宽度应从参数获取)不同,这里的星号表示在输入中跳过该字段,而不将其赋值给变量。

在移植方面,只要遵循相关转换规则, printf scanf 函数在各平台上基本是标准的,唯一的例外是 “%i” 转换,它是 ANSI C 特有的。还有一些不太常用的转换规范和修饰符,在 ANSI C 标准中被引入,具体可查看特定 UNIX 版本的手册页,为了保证可移植性,不建议在代码中使用这些不太通用的转换和修饰符。

2. 读写偏移量的重新定位

操作系统为每个文件关联的一个重要值是读写偏移量,也称为文件偏移量。它指定了从文件开头起的字节“距离”,即下一次读写操作将发生的位置。当文件首次打开或创建时,文件偏移量为零(除非以追加模式打开),首次读写操作将从文件开头开始。随着读写操作的进行,偏移量会根据每次读写的字节数递增。每个文件只有一个读写偏移量,例如,先读取 10 个字节,再写入 20 个字节,读写偏移量将变为 30。

标准 I/O 库提供了三个主要函数来操作

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值