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"等,读者注意所用系统的规定。

二进制和文本模式的区别

  1. 在windows系统中,文本模式下,文件以"\r\n"代表换行。若以文本模式打开文件,并用fputs等函数写入换行符"\n"时,函数会自动在"\n"前面加上"\r"。即实际写入文件的是"\r\n"。
  2. 在类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文件创建、写入及读取相关推荐

  1. HDFS写入和读取过程

    HDFS写入和读取过程 一.HDFS HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而 ...

  2. c#中文件的写入与读取

    在我们做名片管理时用到了对于名片的存储与读入问题.首先我们需要获取当前的路径引用using System.IO;命名空间.我们在写入之前先把card类型的一条记录转化成string类型的数组方便写入. ...

  3. python如何读写文件-python文件的写入和读取

    1.txt,xls,doc等文件的使用 f=open("filename","w") 打开一个用于写入的文件,要写入内容时使用f.write("内容& ...

  4. DCMTK:创建,写入和读取二进制细分对象

    DCMTK:创建,写入和读取二进制细分对象 创建,写入和读取二进制细分对象 创建,写入和读取二进制细分对象 #include "dcmtk/config/osconfig.h" # ...

  5. OpenCV HDF创建,写入和读取数据集

    OpenCV HDF创建,写入和读取数据集 HDF创建,写入和读取数据集 目标 源代码 解释 结果 HDF创建,写入和读取数据集 目标 本教程向您展示: 如何创建数据集? 如何将写入cv::Mat数据 ...

  6. 蜗牛爱课- iOS中plist的创建,数据写入与读取

    iOS中plist的创建,数据写入与读取功能创建一个test.plist文件 -(void)triggerStorage {     NSArray *paths=NSSearchPathForDir ...

  7. Opencv——写入或读取数据到XML或YAML文件

    什么是XML.YAML文件 XML(eXtensible Markup Language)是一种元标记语言.所谓"原标记",就是开发者可以根据自身需要定义的标记,任何满足XML命名 ...

  8. 学生信息管理---C#文件写入及读取

    C#文件写入及读取 功能 程序 实现效果 后续 功能 左边的分组框用于输入学生信息(包括学号.姓名.性别.年龄和分数),用户单击"添加"命令按钮时将当前学生信息添加到指定的文本文件 ...

  9. 从HDFS的写入和读取中,我发现了点东西

    本文分享自华为云社区<从HDFS的写入和读取中,我们能学习到什么>,作者: breakDawn . 最近开发过程涉及了一些和文件读取有关的问题,于是对hdfs的读取机制感到兴趣,顺便深入学 ...

  10. labview文件写入与读取

    labview-文件写入与读取 常用的文件格式 二进制-所有其他文件格式的基础: 二进制文件的特点是:存取速度快,格式紧凑,冗余数据最少,适用于高速数据采集. ASCII-特定类型的二进制文件,多数程 ...

最新文章

  1. 干货|重磅发布:人工智能行业应用价值报告(PDF报告下载)
  2. WeakMap 本身释放,而 keyObject 没有释放的情况下,value 会释放吗?
  3. 如何让PHP运行更高效
  4. 【Tools】Tools博客汇总
  5. oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...
  6. Union与Union All的区别
  7. MVC - 建立模型/实体类,对应到数据库
  8. c++ 测试串口速率_山西充放电测试设备实现多台仪器准确通
  9. 循环结构c语言乘电梯,C语言循环结构练习题.doc
  10. 关于@NotNull 和 @Nullable
  11. POJ 3267 The Cow Lexicon 动态规划
  12. java基于ssm+vue的办公耗材采购管理系统
  13. 使用Kali Linux Metasploit 复现 word宏
  14. POI Excel合并 分页符的复制
  15. python语音合成并播放_用Python写一个语音播放软件
  16. 简易的安卓天气app(四)——搜索城市、完善页面
  17. matlab提取电压基波分量,基于复系数陷波滤波器锁相环的电网正序分量检测
  18. 初创企业购买企业邮箱_停止对初创企业的限制
  19. php 正方,php 模拟登陆正方教务系统
  20. 健康生活每日“8禁忌”

热门文章

  1. PIXIJS的用法及和canvas区别
  2. python编程题----字符串的处理(统计)
  3. 基于大数据电商平台日志分析
  4. 去年大冷门的LBS游戏今年大热 然而这些坑却怎么也绕不开
  5. Coding4Fun.Controls的ToastPrompt小用
  6. 不了解DevOps你落伍了
  7. 咸鱼卖货操作技巧实操经验
  8. 【Calendar】HOUR和HOUR_OF_DAY的区别
  9. linux c语言,gcc基于信号机制的程序抢占型调度,用linux编一个迷你操作系统,实现了多线程的功能
  10. 简单解释Ablation Study