C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)

目录

文件使用方式

文件的顺序读写

常用函数

用法示例

fprintf

fscanf


文件使用方式

在fopen函数中详细的各种使用方式:

文件使用方式 含义 如果指定文件不存在
“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错
“w”(只写) 为了输出数据,打开一个文本文件 建立一个新的文件
“a”(追加) 向文本文件尾添加数据 建立一个新的文件
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
“ab”(追加) 向一个二进制文件尾添加数据 出错
“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建立一个新的文件 建立一个新的文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件
“rb+”(读写) 为了读和写,打开一个二进制文件 出错
“wb+”(读写) 为了读和写,新建一个新的二进制文件 建立一个新的文件
“ab+”(读写) 打开一个二进制文件,在文件尾进行读和写 建立一个新的文件

文件的顺序读写

常用函数

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

用法示例

fprintf

#include 
#include 

struct Client
{
	int amount;
	char limit[10];
	char overdue[5];
	char address[20];
	char name[10];
	int appointment_time;
};
typedef struct Client Client;

int main()
{
	Client c1 = { 0};
	scanf("%d %s %s %s %s %d", &c1.amount, c1.limit, c1.overdue, c1.address, c1.name, &c1.appointment_time);
	FILE* pf = fopen("test.txt", "w");
	if (pf == NULL)
	{
		perror(fopen);
		return 1;
	}

	fprintf(pf, "数量:%d\n额度:%s\n是否逾期:%s\n地址:%s\n姓氏:%s\n预约时间:%d", c1.amount, c1.limit, c1.overdue, c1.address, c1.name, c1.appointment_time);

	fclose(pf);
	pf = NULL;
	return 0;
}

运行程序,输入客户信息:

然后查看文件“test.txt”:

 C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)_第1张图片

可以发现已经成功把简单信息输出到了文件里面:

C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)_第2张图片

fscanf

#include 
#include 

struct Client
{
	int amount;
	char limit[10];
	char overdue[5];
	char address[20];
	char name[10];
	int appointment_time;
};
typedef struct Client Client;

int main()
{
	Client c1 = { 0 };
	/*scanf("%d %s %s %s %s %d", &c1.amount, c1.limit, c1.overdue, c1.address, c1.name, &c1.appointment_time);*/
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	fscanf(pf, "%d %s %s %s %s %d", &c1.amount, c1.limit, c1.overdue, c1.address, c1.name, &c1.appointment_time);

	printf("数量:%d\n额度:%s\n是否逾期:%s\n地址:%s\n姓氏:%s\n预约时间:%d", c1.amount, c1.limit, c1.overdue, c1.address, c1.name, c1.appointment_time);

	fclose(pf);
	pf = NULL;
	return 0;
}

先给text文件录入对应信息,使得fscanf来输入信息:

C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)_第3张图片

运行程序,从文件text.txt中读入信息,最终我们把信息打印出来:

C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)_第4张图片

如果文件不存在 ,则会报错:

任何一个C程序,只要运行起来就会默认打开3个流:

FILE* stdin -标准输入流(键盘)

FILE* stdout -标准输出流(屏幕)

FILE* stderr -标准错误流(屏幕) 

所以,我们也可以用fprintf函数输出到屏幕中:

fprintf(stdout,"%d", c1.amount);

end


学习自:比特鹏哥——C语言课程

你可能感兴趣的:(C语言,c语言,开发语言,学习,笔记)