Loading... ## 字节的读操作 ch = fgetc(fp); //读一个字节 说明:从指定文件读一个字节赋给ch(以“读”或“读写”方式打开) * 文本文件:读到文件结尾处返回EOF * 二进制文件:读到文件结尾,使用feof(后面会讲)判断结尾 --- ##### 现在来打开一个a.txt文件演示: * 首先需要创建当前目录文件 ![](https://blog.fivk.cn/usr/uploads/2021/02/4159249208.png) * 现在打开文件 ```C #include<stdio.h> int main(int argc, char* argv[]) { FILE* fp = NULL; //1、使用fopen打开一个文件或文件指针 fp = fopen("a.txt","r"); if (fp == NULL) { perror("fopen"); return 0; } else { //2、对文件的操作 } //3、关闭文件 fclose(fp); return 0; } ``` * 因为我们只是打开并没有读写所以目前什么也没有 ![](https://blog.fivk.cn/usr/uploads/2021/02/1177487652.png) --- ##### 现在来看看怎么读: 我们先创建一个char类型数组,和int型i,然后修改a.txt里面内容。好像中文打不开,直接乱码了![](https://blog.fivk.cn/usr/uploads/2021/02/1104146742.png) * 操作如下 ```C #include<stdio.h> int main(int argc, char* argv[]) { char buf[128] = ""; int i = 0; FILE* fp = NULL; //1、使用fopen打开一个文件或文件指针 fp = fopen("a.txt","r"); if (fp == NULL) { perror("fopen"); return 0; } else { //2、对文件的操作 while (1) { //fgetc调用一次读取一个字节,再次调用读取下一个字节 buf[i] = fgetc(fp); if (buf[i] == EOF)//表示读到文件末尾 { break; } else { i++; } } printf("buf = %s", buf); } //3、关闭文件 fclose(fp); return 0; } ``` * 打印结果 ![](https://blog.fivk.cn/usr/uploads/2021/02/805642602.png) ## 字节的写操作 fputc(ch, fp); //写一个字符(ch) 说明:把一个ch变量中的值(一个字节)写道指定的文件 * 如果输出成功:返回输出的字节. * 如果输出失败:返回一个EOF. <div class="tip inlineBlock success"> EOF是在stdio.h文件中定义的符号常量,值为-1 </div> ##### 现在来写一个代码: --- ```C #include<stdio.h> int main(int argc, int argv[]) { char buf[128] = ""; int i = 0; FILE* fp = NULL; fp = fopen("b.txt", "w"); if (fp == NULL) { perror("fopen"); return 0; } //使用fputc进行文件数据写入 printf("请输入要写入文件的字符串:"); fgets(buf, sizeof(buf), stdin);//会获取换行符 buf[strlen(buf) - 1] = 0;//去掉键盘输入换行符 //将字符串buf中的元素 逐个写入文件中 while (buf[i] != '\0') { fputc(buf[i], fp); i++; } return 0; } ``` * 运行写入hello Fivk![](https://blog.fivk.cn/usr/uploads/2021/02/3751454430.png) * 我们在当前目录找到了我们刚输入的字符串(有点意思) ![](https://blog.fivk.cn/usr/uploads/2021/02/2170426087.png) --- <div class="tip inlineBlock share"> 这里我们都是一个字节一个字节的读和写,相对说这样一个字节一个字节的效率太低了。现在我们只是认识一下我们的函数操作有这样的一个字节的读写,有些时候也需要一个字节一个字节的特殊操作 </div> --- 作业:从一个文件(本文文件)中读取所有信息,写入另一个文件中 ```C #include<stdio.h> int main(void) { char ch='A'; FILE* p1 = fopen("a.txt", "r"), * p2 = fopen("b.txt", "w"); while (ch != EOF) { ch = fgetc(p1); fputc(ch, p2); } fclose(p1); fclose(p2); return 0; } ``` 最后修改:2021 年 02 月 18 日 © 禁止转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏