一、文件IO——写入字符串
1、不带格式写入
在文件中写入字符串可以使用fputs函数,使用此函数时变量默认为char类型。可以定义一个int类型的变量来接收fputs的返回值,便于后续测试。ioFile为上节在使fopen时定义的返回的结构体指针,表示一个文件。本节所有代码都需建立在上一节打开和关闭文件上。需要先打开文件再进行各种操作,最后手动关闭文件。
通过Makefile运行后会在io.txt中在“a”后接着输入。(上节有最终测试代码,其中读写权限应该为a+才能在原有文字基础上追加写)。
2、带格式写入
使用fprintf可以定义写入文件的格式。定义新结构体指针变量“name”,使用fprintf函数可以带原格式输入文件。
以下为输入结果。
二、文件IO——读取与格式化读取
1、读取字节
读取字节可用fgetc函数 ,一次只可读取一个字节,如果需要读取汉字,则可以使用while循环读取所有字节。
运行结果如下。终端会自动将可以组成汉字的多个字节处理为汉字,所以在while循环内printf要放在fgetc前面以防出现乱码,可以尝试调换顺序加深理解。
2、读取字符串
使用fgets可读取字符串。buffter应设得比需要读取的所有数据的长度长。
运行结果与上类似,若最后需要换行则应放在while后,否则汉字部分会出现乱码,可根据终端处理字节组合的原理加深理解。
3、格式化读取
使用fscanf函数可保存数据原有的格式(固定格式接收)。首先新建一个文件,再通过fopen打开。
在新文件内输入测试文字。
使用fscanf函数。 使用while循环读取,if判断是否读取成功。最后手动关闭文件。
编译结果如下,fscanf可自动忽略换行符。
输出下图红色方框内的内容是因为“韩国”之后没有检测到符合要求的参数类型,所以输出成功匹配到的参数只有一个,第二行输出只更新了成功匹配到的一个参数,其余还是输出上一轮成功匹配的参数。
本文基于b站up主尚硅谷的嵌入式Linux应用层开发教程总结。