C语言文件打开关闭详解、文件顺序读写详解。

这篇具有很好参考价值的文章主要介绍了C语言文件打开关闭详解、文件顺序读写详解。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件的打开和关闭

fopen函数原型:

FILE *fopen( const char *filename, const char *mode );
  • const char *filename 文件的路径以及名字
  • const char *mode 文件的打开方式
文件打开方式 含义 如果文件不存在
“r” 文件不存在会报错
“w” 写(清空写) 建立一个新的文件
“a” 写(追加写) 建立一个新的文件
“r+” 读写 文件不存在会报错
“w+” 读写(清空写) 建立一个新的文件
“a+” 读写(追加写) 建立一个新的文件
“rb” 读二进制文件 文件不存在会报错
“wb” 写二进制文件(清空写) 建立一个新的文件
“ab” 写二进制文件(追加写) 建立一个新的文件
“rb+” 读写二进制文件 文件不存在会报错
“wb+” 读写二进制文件(清空写) 建立一个新的文件
“ab+” 读写二进制文件(追加写) 建立一个新的文件
  • FILE *fopen 返回一个指向 FILE类型数据的指针变量,通过 FILE*指针指向某个文件的信息区(是一个结构体变量),通过文件信息区就能够访问该文件。如果打开失败返回 NULL 指针

注:使用 "w" 的方式打开文件,会将文件中的内容清空在写。当你使用 "w"的方式打开文件,但是不写任何内容,有清空文件的效果。

文件路径的两种书写方式:

1.使用反斜杠 \ 会使后面的字符转义,所以需要使用 \\两个反斜杠代表一个斜杠。

FILE* fp = fopen("D:\\test.txt" , "w");

2.使用 / 就不需要考虑转义字符的问题了。

FILE* fp = fopen("D:/test.txt", "w");

fclose函数原型:

int fclose( FILE *stream );
  • FILE *stream 指向文件流的指针
  • int fclose 关闭成功返回 0 关闭失败返回 EOF

例1:

#include <stdio.h>
#include <stdlib.h>

int main() {

	// 打开文件
	//FILE* fp = fopen("D:\\test.txt" , "w");
	FILE* fp = fopen("D:/test.txt", "w");
	if (fp == NULL) {
		perror("fopen:");
		exit(-1);
	}
	// 文件操作
	// ...

	// 关闭文件
	fclose(fp);
	fp = NULL;


	return 0;
}

文件的顺序读写

功能 函数名 适用于
字符输入函数 fgetc 所有输入流
字符输出函数 fputc 所有输出流
字符串输入函数 fgets 所有输入流
字符串输出函数 fputs 所有输出流
格式化输入函数 fscanf 所有输入流
格式化输出函数 fprintf 所有输出流
二进制输入 fread 文件流
二进制输出 fwrite 文件流

stdin 标准输入流(键盘),stdout 标准输出流(屏幕)。

1.fgetc

函数原型:

int fgetc( FILE *stream );
  • FILE *stream 输入流
  • int fgetc 返回该字符的 ASCII 值,失败或文件结束返回 EOF

例:

#include <stdio.h>

int main() {

	FILE* fp = fopen("D:/test.txt", "r");
	if (fp == NULL) {
		perror("fopen:");
		exit(-1);
	}
	char ch = fgetc(fp);
	putchar(ch);

	fclose(fp);
	fp = NULL;

	return 0;
}

2.fputc

函数原型:

int fputc( int c, FILE *stream );
  • int c 输出的字符
  • FILE *stream 输出流
  • int fputc 返回该字符的 ASCII 值,失败返回 EOF

例:

#include <stdio.h>

int main() {

	FILE* fp = fopen("D:/test.txt" , "w");
	if (fp == NULL) {
		perror("fopen:");
		exit(-1);
	}
	fputc('a' , fp);
	
	fclose(fp);
	fp = NULL;

	return 0;
}

注:fgetc(stdin) == getchar(); fputc('a' , stdout) == putchar('a');


3.fputs

函数原型:

int fputs( const char *string, FILE *stream );
  • const char *string 输出的字符串
  • FILE *stream 输出流
  • int fputs 成功返回非负的值,失败返回 EOF

例:

#include <stdio.h>

int main() {

	FILE* fp = fopen("D:/test.txt" , "w");
	if (fp == NULL) {
		perror("fopen:");
		exit(-1);
	}

	fputs("abcdefg" , fp);

	fclose(fp);
	fp = NULL;


	return 0;
}

4.fgets

函数原型:

char *fgets( char *string, int n, FILE *stream );
  • char *string 这是指向一个字符数组的指针,用来存放读取到的字符串。
  • int n 最大读到字符个数,包含 '\0' ,实际读到 n-1 个字符
  • FILE *stream 输入流
  • char *fgets 如果成功返回读取到字符串的首元素地址,失败或者文件结束返回 NULL

例:

#include <stdlib.h>
#include <stdio.h>

int main() {

	FILE* fp = fopen("D:/test.txt", "r");
	if (fp == NULL) {
		perror("fopen:");
		exit(-1);
	}

	char buffer[256] = { 0 };
	char * res = fgets(buffer , 7 , fp);
	if (res == NULL) {
		perror("fgets:");
		exit(-1);
	}
	fputs(buffer , stdout);

	fclose(fp);
	fp = NULL;


	return 0;
}

5.fprintf

函数原型:

int fprintf( FILE *stream, const char *format [, argument ]...);
  • FILE *stream 输出流
  • const char *format [, argument ]... 格式化数据和 printf 用法类似

例:

#include <stdio.h>
#include <stdlib.h>

typedef struct Data {
	int order;
	double score;
}Data;

int main() {

	Data data = { 1 , 100 };
	FILE* fp = fopen("D:/test.txt", "w");
	if (!fp) {
		perror("fopen:");
		exit(-1);
	}

	fprintf(fp , "%d %lf" , data.order , data.score);

	fclose(fp);
	fp = NULL;


	return 0;
}

C语言文件打开关闭详解、文件顺序读写详解。


6.fscanf

函数原型:

int fscanf( FILE *stream, const char *format [, argument ]... );
  • FILE *stream 输入流
  • const char *format [, argument ]... 格式化数据和 scanf 用法类似
  • int fscanf 读取成功返回读入的参数的个数,失败返回 EOF

例:

#include <stdio.h>
#include <stdlib.h>

typedef struct Data {
	int order;
	double score;
}Data;

int main() {

	Data temp = { 0 };
	FILE* fp = fopen("D:/test.txt", "r");
	if (!fp) {
		perror("fopen:");
		exit(-1);
	}

	fscanf(fp , "%d %lf" , &temp.order , &temp.score);
	fprintf(stdout , "%d %lf", temp.order, temp.score);

	fclose(fp);
	fp = NULL;

	return 0;
}

C语言文件打开关闭详解、文件顺序读写详解。


7.fwrite

函数原型:

size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
  • const void *buffer 指向要写入数据的指针
  • size_t size 每个元素的字节大小
  • size_t count 写入元素的个数
  • FILE *stream 文件流

例:

#include <stdio.h>
#include <stdlib.h>

typedef struct Data {
	char name[20];
	int order;
}Data;

int main() {

	Data data = { "孙悟空" , 1 };
	FILE* fp = fopen("D:/test.txt", "wb");
	if (!fp) {
		perror("fopen:");
		exit(-1);
	}

	fwrite(&data , sizeof(data) , 1 , fp);

	fclose(fp);
	fp = NULL;

	return 0;
}

8.fread

函数原型:

size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
  • void *buffer 这是指向一个存放读取到的数据的指针。
  • size_t size 每个元素的字节大小
  • size_t count 读入元素的个数
  • FILE *stream 文件流
  • size_t fread 返回成功读取的对象个数,若出现错误或到达文件末尾,则可能小于 count

例:文章来源地址https://www.toymoban.com/news/detail-499747.html

#include <stdio.h>
#include <stdlib.h>

typedef struct Data {
	char name[20];
	int order;
}Data;

int main() {

	Data temp = { 0 };
	FILE* fp = fopen("D:/test.txt", "rb");
	if (!fp) {
		perror("fopen:");
		exit(-1);
	}

	fread(&temp, sizeof(temp), 1, fp);
	printf("%s %d" , temp.name , temp.order);

	fclose(fp);
	fp = NULL;

	return 0;
}

到了这里,关于C语言文件打开关闭详解、文件顺序读写详解。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C/C++之文件操作————文件的打开与关闭

    个人主页:点我进入主页 专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录  1.前言 2. 什么是文件 2.1 程序文件  2.2 数据文件 2.3 文件名 3.文件的打开与关闭

    2024年02月08日
    浏览(35)
  • Python基础语法(五)—— 文件基本操作(打开、写入、关闭、查找)

    我们平时所创建的变量都是保存在内存中的,我们知道如果重启应用或者重启机器,内存中的数据就会丢失。 如果想让数据能够持久化存储,就可以把数据保存到文件或者是数据库中。 比如windows上,通过后缀名可以看到常见的文件类型有: 可执行文件(exe) 文本文件(t

    2024年02月01日
    浏览(39)
  • EXCEL文件打开提示“找不到工程或库”,点击【确定】后自动关闭退出

    最近打开启用宏的excel文件后都会弹出窗口提示:找不到工程或库,点击【确定】后文件直接退出,网上找的一些办法也需要打开文件才能解决,很少有看到比较完整的说这种连文件都无法打开的情况怎么解决的办法,所以记录下现在的解决过程,希望有看到的大神能指点指

    2024年02月04日
    浏览(149)
  • Mac 打开/关闭 iCloud 后导致桌面文件夹、文档删除,恢复步骤!

    不小心打开/关闭了 iCloud 后,导致桌面内容全部丢失,再次打开同步,发现还是确实很多内容,如何找回最初的文件副本。 当 iCloud 关闭时,会将任何未上传到 iCloud 云盘的文稿内容转移打包放到当前 Mac 电脑的个人文件夹内,文件夹名为: iCloud云盘(归档) ,如果不小心反

    2024年02月17日
    浏览(60)
  • qt学习:实战 记事本 + 快捷键 + 鼠标滚轮 + 打开读取写入关闭文件

    目录 功能 步骤  配置ui界面 添加图片资源 添加头文件和定义成员数据和成员函数 在构造函数里初始化 增加当前字体大小函数 减小当前字体大小函数 在用户按下 Ctrl 键的同时滚动鼠标滚轮时,执行放大或缩小操作 多选框变化后发出信号绑定槽函数来改变编码 编辑框的光标

    2024年04月11日
    浏览(49)
  • 【vim进阶】vim编辑器的多文件操作(如何打开多个文件,如何进行文件间的切换,如何关闭其中的某一个文件)

    现在有多个文件 file1 ,file2 , … ,filen. 现在举例打开两个文件 file1,file2 该方式打开文件,显示屏默认显示第一个文件也就是 file1。 在命令模式下使用edit指令 打开一个文件可以通过: edit filename(或者简写为 e ) 。这里的文件名可以采用绝对路径或者是相对路径。 例如我们想打

    2024年02月16日
    浏览(44)
  • 【Python--XML文件读写】XML文件读写详解

    1.1 介绍 XML 指可扩展标记语言XML ,常被设计用来传输和存储数据。 XML 是一种固有的分层数据格式,最自然的表示方式是使用树。 ET为此有两个类 - ElementTree将整个 XML 文档表示为一棵树,并 Element表示该树中的单个节点。与整个文档的交互(从文件读取和写入/从文件写入)通

    2024年02月04日
    浏览(39)
  • C语言文件操作(文件读写)

    本文主要介绍C语言中文件操作的相关内容(例:文件读、写等相关函数)。 在对计算机的使用中我们几乎离不开文件。例如常见的有word 文档,txt文本文件,图片文件、音频文件等。 文件是以计算机硬盘为载体存储在计算机上的信息集合。是数据源的一种,最主要的作用是保

    2024年02月02日
    浏览(42)
  • C语言—顺序表详解

      顺序表,全名顺序存储结构,是线性表的一种。通过《什么是线性表》一节的学习我们知道,线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外。 不仅如此,顺序表对数据的物理存储结构也有要求。顺序表存储数据时,会提前申请一整块足够大小的物理空

    2024年01月25日
    浏览(35)
  • 关闭 Windows 安全中心警报 及 用户账户允许此应用对你的设备进行更改 通知 及 打开文件 - 安全警告 通知

    目录 1.关闭 Windows 安全中心警报 2.关闭 用户账户 允许此应用对你的设备进行更改 通知 3.关闭 打开文件 - 安全警告 通知 打开控制面板 :Win + R 打开运行 输入 control     取消勾选即可 。  打开控制面板 :Win + R 打开运行 输入 control      打开控制面板 :Win + R 打开运行 输入

    2024年02月11日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包