文件操作https://www.toutiao.com/a6611494147658351118/ 我们要想对文件进行读取或写入,需要有一个能够访问到该文件的文件指针(FILE类型),这样我们就能通过文件指针对文件进行操作啦! FILE *fp; //声明文件指针 关于访问模式:——只读:“r” ——只写(覆盖): “w” —— 文件末尾追加: “a” ——可读可写: “r+”或“w+” ——二进制文件:“b” ——文本文件:“t” //访问模式可以叠加,例如"rb"代表读取二进制文件 之后我们就可以对文件进行操作啦(如fgetc()函数(读取)和fputc()函数(写入)) ——关于读取:文件指针指向文件后,通过fgetc(fp);获得当前指针之后位置的一个字符,每获得一个字符指针就会自动向后移动一个字符(如果到达文件尾部则会返回EOF) ——关于写入:通过fputc(‘字符’, fp);方式将字符写入到与fp关联的文件中 文件指针不再使用后需断开关联,格式为: fclose(fp); 举个例子: //省略代码 undefined注意!!!! 在给文件指针命名时,不能使用 stdin、stdout 和 stderr 这三个名字,因为这三个名字是系统内置用于标准输入、标准输出、标准错误的文件指针名 我们可通过 fgetc(stdin); 获得来自标准输入的字符 通过 fputc(ch, stdout); 将 ch 字符输出到标准输出 通过 fputc(ch, stderr); 将 ch 字符输出到标准错误 除fgetc和fputc外,我们还可以使用fscanf和fprintf函数 我们可以使用fscanf通过文件指针读取: 也可以使用fprintf通过文件指针写出 fscanf(p1, "%c", &a); 这两个函数是不是感觉有点眼熟?对!大家熟悉的scanf和printf 和它们长得很像,那它们之间有关系吗? 答案是有的。scanf可以看作是 fscanf的特例 printf可以看作是fprintf 的特例 至于为什么,看下面的代码: fscanf(stdin, "%c", &a); //等价于下一行 嗯嗯,上面也说啦,stdin和stdout的实质也是文件指针,分别代表从控制台获取,输出到控制台。 当然啦,stdin和stdout也可以通过fclose关掉,大家可以试一下关掉后还能进行scanf和printf嘛~ 赶紧跑路hahaha 写在最后喜欢此篇文章或觉得这篇文章对你有帮助的读者可以点播关注或者转发,私信小编001即可获得小编自己整理的一份2018最新的C/C++资料和0基础入门教程,欢迎初学和进阶中的小伙伴 |
|
来自: 山峰云绕 > 《C语言数据结构描述Windows程序设计》