心系天下1

文件操作

关闭文件

fclose(fp);

fp=NULL;

打开文件

FILE* fp=fopen("xxx.xxx","xx");

第一个参数为设置的文件的类型

第二个参数有以下

操作作用文件不存在
"w"(只写) 为了输出数据,打开一个文本文件 建立一个新的文件
"r"(只读) 为了输出数据打开一个已经存在的文件 出错
“a”(追加) 向文本文件尾添加数据 出错
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
“ab”(追加) 向一个二进制文件尾添加数据 出错
“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建立一个新的文件 建立一个新的文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件
“rb+”(读写) 为了读和写,打开一个二进制文件 出错
“wb+”(速写) 为了读和写,新建一个文本文件 建立一个新的文件
“ab+”(读写) 打开一个二进制文件,在文件尾进行读写 建立一个新的文件

有关文件顺序读写的函数有

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

键盘--标准输入设备-----stdin

屏幕--标准输出设备-----stdout

 

fputc函数的使用

int main()
{
	FILE* fpwrite = fopen("text.txt", "w");
	if (fpwrite == NULL)
	{
		perror("打开失败");
		return;
	}
	fputc('H', fpwrite);
	fputc('e', fpwrite);
	fputc('l', fpwrite);
	fputc('l', fpwrite);
	fputc('o', fpwrite);


	fclose(fpwrite);
	fpwrite = NULL;

	return 0;
}

运行后在text.txt文件中可以看到

 fgetc函数的使用

text.txt中含有Hello

int main()
{
	FILE* fpread = fopen("text.txt", "r");
	if (fpread == NULL)
	{
		perror("打开失败");
		return;
	}
	printf("%c\n", fgetc(fpread));
	printf("%c\n", fgetc(fpread));
	printf("%c\n", fgetc(fpread));
	printf("%c\n", fgetc(fpread));
	printf("%c\n", fgetc(fpread));


	fclose(fpread);
	fpread = NULL;

	return 0;
}

运行后在命令台可以看到

fputs函数使用

int main()
{
	FILE* fpwrites = fopen("text1.txt", "w");
	if (fpwrites == NULL)
	{
		perror("打开失败");
		return;
	}
	fputs("Hello", fpwrites);
	fputs("World", fpwrites);

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

 在text1.txt文件中显示

fgets函数的使用

int main()
{
	FILE* fpreads = fopen("text1.txt", "r");
	char tmp[100] = { 0 };
	if (fpreads == NULL)
	{
		perror("打开失败");
		return;
	}
	//将fpreads中50个字符输出到tmp中
	fgets(tmp, 50, fpreads);
	//输出tmp
	printf("%s\n", tmp);
	fclose(fpreads);
	fpreads = NULL;
	return 0;
}

 在命令台中显示

fprintf函数使用

int main()
{
	FILE* fpwrite = fopen("text2.txt", "w");
	if (fpwrite == NULL)
	{
		perror("打开失败");
		return;
	}

	fprintf(fpwrite, "%s %s %s %d", "Hello", "Word", "in", 2021);

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

 在text2.txt中显示

 fscanf函数的使用

int main()
{
	FILE* fpread = fopen("text2.txt", "r");
	char arr1[20] = { 0 };
	char arr2[20] = { 0 };
	char arr3[20] = { 0 };
	int year = 0;
	if (fpread == NULL)
	{
		perror("打开失败");
		return;
	}
	//将fpread中数据存放到arr1, arr2, arr3, year中
	fscanf(fpread, "%s %s %s %d", arr1, arr2, arr3, &year);
	printf("%s %s %s %d", arr1, arr2, arr3, year);
	fclose(fpread);
	fpread = NULL;
	return 0;
}

在命令台显示

fwrit函数使用

int main()
{
	int a = 10000;
	FILE* fpwrite = fopen("text3.txt", "wb");
	if (fpwrite == NULL)
	{
		perror("打开失败");
		return;
	}
	//将a以四个字节为单位存放一个元素到fpwrite中
	fwrite(&a, 4, 1, fpwrite);//二进制的方式写到文件中
	fclose(fpwrite);
	fpwrite = NULL;
	return 0;
}

 以二进制编辑器打开text3.txt

fread函数使用

int main()
{
	FILE* fpread = fopen("text3.txt", "rb");
	int a = 0;

	if (fpread == NULL)
	{
		perror("打开失败");
		return;
	}
	/* 读取并显示数据 */
	fread(&a, sizeof(a), 1, fpread);
	printf("%d\n", a);
	fclose(fpread);
	fpread = NULL;
	return(0);
}

 在命令台显示

 

 

posted on 2021-12-01 09:10  心系天下1  阅读(33)  评论(0编辑  收藏  举报

导航