引入
前面我们学习了如何向文件写入一个字符,以及读取一个字符串,但是这太反常识了,有没有方便读写一个字符串的方法呢?当然是有的!😎
读写字符串的函数
C 语言允许通过函数 fgets 和 fputs 一次读写一个字符串
函数名 | 调用形式 | 功能 | 返回值 |
---|---|---|---|
fgets | fgets(str,n,fp) | 从 fp 指向的文件中,读取一个长度位 n-1 的字符串,存放到字符数组 str 中。 | 成功则返回str 的地址,失败则返回 NULL |
fputs | fputs(str,fp) | 把 str 所指向的字符串写到文件指针变量 fp 中 | 成功为0,失败为非0 |
fgets 函数
一般形式
char fgets (char str , int n , FILE *fp);
作用是从文件读入一个字符串到字符数组
1 | fgets(str, n, fp); |
其中:
- fp:指向文件信息区的指针;
- str:字符数组,获取的字符串赋值给这个数组
- n:获取长度,记住职能获取 n-1 位,剩下的那一位要给\0
如果在读取 n 个字符过程中,遇到 \n 换行符,或文件结束符 EOF ,读入即结束。(不管读没读到 n 位)
返回 str 字符数组首元素地址
fputs 函数
一般形式
int fputs(char str , FILE fp);
将 str 所指向的字符串输出到 fp 所指向的文件中。
1 | fputs("Bliner", fp); |
fputs 函数的第一个参数可以是
- 字符串
- 字符数组
- 字符型指针
结尾的\0不输出,输出后:
- 成功,返回0
- 失败,返回 EOF
其实 fgets 和 fputs 和之前学习的 gets 和 puts 很像,只不过前者针对的是磁盘文件,后者是终端显示。
举个例子
从键盘输入若干个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。
1 |
|
解释
- 我们在打开文件的时候,直接指定了地址,我们的地址是直接用字符串常量显示的。注意,如果是 windows 系统,在写\的时候,记得写成\,因为单独的\出现是转义符。
- 向磁盘输出内容的时候,是不包括换行符的,所以,我们要手动输入一个换行符。
fputs("\n",fp)
注意
如果使用 fgets 函数读入上面的内容时,因为每一行后面都有\n ,所以遇到\n就会自动结束读入,但是\n
会读入到程序中。
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。