C文件创建、写入及读取
1、创建或打开文件函数fopen
(1)描述
C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。
(2)声明
FILE *fopen(const char *filename, const char *mode)
- 可见次函数为一个指针函数。
(3)参数
1) filename
这是 C 字符串,包含了要打开的文件名称。
2) mode
这是 C 字符串,包含了文件访问模式,模式如下:
- r 以只读方式打开文件,该文件必须存在。
- r+ 打开一个用于更新的文件,可读取也可写入。该文件必须存在。
- w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
- w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
- a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
- a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的EOF符不保留) - rb+ 读写打开一个二进制文件,允许读数据。
- rw+ 读写打开一个文本文件,允许读和写。
- wb 只写打开或新建一个二进制文件;只允许写数据。
- wb+ 读写打开或建立一个二进制文件,允许读和写。
- ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
- at+打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。
- 上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。
- 有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+",“w+”,“a+”,而用"rw",“wr”,"ar"等,读者注意所用系统的规定。
二进制和文本模式的区别
- 在windows系统中,文本模式下,文件以"\r\n"代表换行。若以文本模式打开文件,并用fputs等函数写入换行符"\n"时,函数会自动在"\n"前面加上"\r"。即实际写入文件的是"\r\n"。
- 在类Unix/Linux系统中文本模式下,文件以"\n"代表换行。所以Linux系统中在文本模式和二进制模式下并无区别。
3) 返回值
该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。
2、往文件里格式化输出函数fprintf
(1)描述
C 库函数 int fprintf(FILE *stream, const char *format, …) 发送格式化输出到流 stream 中。
(2)声明
int fprintf(FILE *stream, const char *format, …)
(3)参数
1) stream
这是指向 FILE 对象的指针,该 FILE 对象标识了流。
2)format
这是 C 字符串,包含了要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是%[flags][width][.precision][length]specifier,具体讲解如下:
参考fprintf函数介绍
3)返回值
如果成功,则返回写入的字符总数,否则返回一个负数。
示例
1) 代码(VC++6.0)
#include <stdio.h>int main ()
{FILE *fp;//定义一个FILE类型的指针char buffer[255];//定义一个数组缓存区fp = fopen("file.txt","w");//打开file.txt文件(若没有则新建),权限为仅可以写入fprintf(fp,"你好,2021!");//向file.txt文件内写入"你好,2021!"fclose(fp);//关闭file.txt文件fp = fopen("file.txt","r");//打开刚刚file.txt文件(file.txt文件已经存在),权限为仅可以读取fgets(buffer, 255, (FILE*)fp);//函数fgets()从fp所指向的输入流中读取(255-1)个字符printf("%s\n", buffer );//打印数组缓存区buffer里的内容fclose(fp);//关闭file.txt文件return(0);
}
2) 执行效果
编译好,未运行之前截图
执行之后截图如下,可看到新建一个file.txt文本文件
打开文本文件,可见里面写入的内容如下,和程序中一样
其他相关的函数可参考C标准库-<stdio.h>,里面有每个函数的相关介绍。
C文件创建、写入及读取相关推荐
- HDFS写入和读取过程
HDFS写入和读取过程 一.HDFS HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而 ...
- c#中文件的写入与读取
在我们做名片管理时用到了对于名片的存储与读入问题.首先我们需要获取当前的路径引用using System.IO;命名空间.我们在写入之前先把card类型的一条记录转化成string类型的数组方便写入. ...
- python如何读写文件-python文件的写入和读取
1.txt,xls,doc等文件的使用 f=open("filename","w") 打开一个用于写入的文件,要写入内容时使用f.write("内容& ...
- DCMTK:创建,写入和读取二进制细分对象
DCMTK:创建,写入和读取二进制细分对象 创建,写入和读取二进制细分对象 创建,写入和读取二进制细分对象 #include "dcmtk/config/osconfig.h" # ...
- OpenCV HDF创建,写入和读取数据集
OpenCV HDF创建,写入和读取数据集 HDF创建,写入和读取数据集 目标 源代码 解释 结果 HDF创建,写入和读取数据集 目标 本教程向您展示: 如何创建数据集? 如何将写入cv::Mat数据 ...
- 蜗牛爱课- iOS中plist的创建,数据写入与读取
iOS中plist的创建,数据写入与读取功能创建一个test.plist文件 -(void)triggerStorage { NSArray *paths=NSSearchPathForDir ...
- Opencv——写入或读取数据到XML或YAML文件
什么是XML.YAML文件 XML(eXtensible Markup Language)是一种元标记语言.所谓"原标记",就是开发者可以根据自身需要定义的标记,任何满足XML命名 ...
- 学生信息管理---C#文件写入及读取
C#文件写入及读取 功能 程序 实现效果 后续 功能 左边的分组框用于输入学生信息(包括学号.姓名.性别.年龄和分数),用户单击"添加"命令按钮时将当前学生信息添加到指定的文本文件 ...
- 从HDFS的写入和读取中,我发现了点东西
本文分享自华为云社区<从HDFS的写入和读取中,我们能学习到什么>,作者: breakDawn . 最近开发过程涉及了一些和文件读取有关的问题,于是对hdfs的读取机制感到兴趣,顺便深入学 ...
- labview文件写入与读取
labview-文件写入与读取 常用的文件格式 二进制-所有其他文件格式的基础: 二进制文件的特点是:存取速度快,格式紧凑,冗余数据最少,适用于高速数据采集. ASCII-特定类型的二进制文件,多数程 ...
最新文章
- 干货|重磅发布:人工智能行业应用价值报告(PDF报告下载)
- WeakMap 本身释放,而 keyObject 没有释放的情况下,value 会释放吗?
- 如何让PHP运行更高效
- 【Tools】Tools博客汇总
- oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...
- Union与Union All的区别
- MVC - 建立模型/实体类,对应到数据库
- c++ 测试串口速率_山西充放电测试设备实现多台仪器准确通
- 循环结构c语言乘电梯,C语言循环结构练习题.doc
- 关于@NotNull 和 @Nullable
- POJ 3267 The Cow Lexicon 动态规划
- java基于ssm+vue的办公耗材采购管理系统
- 使用Kali Linux Metasploit 复现 word宏
- POI Excel合并 分页符的复制
- python语音合成并播放_用Python写一个语音播放软件
- 简易的安卓天气app(四)——搜索城市、完善页面
- matlab提取电压基波分量,基于复系数陷波滤波器锁相环的电网正序分量检测
- 初创企业购买企业邮箱_停止对初创企业的限制
- php 正方,php 模拟登陆正方教务系统
- 健康生活每日“8禁忌”