引入
前面,我们学会了如何打开一个文件,并创建一个指针指向该文件。打开之后,我们就要对文件进行读写了。
向文件读写字符
对文件进行读写一个字符,需要下面这两个函数
函数名 | 调用形式 | 功能 | 返回值 |
---|---|---|---|
fgetc | fgetc(fp) | 从 fp 指向的文件读入一个字符 | 读入成功,返回所读的字符 读入失败,返回-1 |
fputc | fputc(fp) | 把字符 ch 写到文件指针变量 fp 指向的文件 | 输出成功,返回输出的字符 输出失败,返回-1 |
fgetc 中
- f: 表示 file 即文件
- get:表示 获取
- c:表示 character
- fputc 同理
例子引入
从键盘逐个输入字符串,然后用 fputc 函数写到磁盘文件中
1 |
|
解释
- 我们使用 fopen 打开文件的时候,
文件名可以是变量或者字符串常量或者字符数组的首地址
,因为文件使用方式是 w ,所以,如果没有该文件,则会新建。 - 因为 fopen 的打开方式是 w ,所以文件只能写入,不能读取。fopen 成功后,会返回该文件信息区的起始地址。如果不能打开,那就返回
文件不能打开
,然后使用了exit(0)
终止程序运行。 exit
是标准 C 的库函数,表示终止程序
,在 stdlib.h 中包含- 执行过程是,我们先从键盘获取一个字符,如果不是 # 号则进入 while 循环体,并首先存储这个字符。再获取下一个。
- 最后别忘了用 fclose 关闭文件,否则无法保存。
例子强化
在上面例题的基础上,我们要求从上面写入的文件读取里面的内容,在同一目录下复制一个新的文件,也包含我们输入的内容。
1 |
|
解释
- 我们注意到最关键的读取 fgetc ,我们并没有改变函数,只是一遍一遍的调用,
一遍一遍的调用即可自动将读写位置后移。
- 为了知道我们的文件是否都读入了,使用 feof 函数就可以检查,如果已经结束了,就是1真,否则是0假,所以
!feof(in)
为真。 - 我们在程序后方,通过循环将file1的内容逐字赋值给 file2,这样 file2 的内容和 file1的内容就完全相同了。
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。