文件常用操作

目录

(一)文件的打开与关闭

(二)常用文件操作函数

        (1)fgetc和fputc

          (2)fgets和fputs

        (3)fscanf和fprintf

        (4)fread和fwrite

(三)文件读取结束的判定


(一)文件的打开与关闭

        文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。
        在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。

        打开文件:

FILE * fopen ( const char * filename, const char * mode );

        关闭文件:

int fclose ( FILE * stream );

例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	//打开文件
	FILE* fp = fopen("test.txt", "r");    //以读取的形式打开文件

	//关闭文件
	fclose(fp);
	return 0;
}

文件打开方式类型补充:

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

(二)常用文件操作函数

        (1)fgetc和fputc

        fgetc:

int fgetc ( FILE * stream );

     fputc:

int fputc ( int character, FILE * stream );

    例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	//输出
	FILE* fout = fopen("test.txt", "w");
	//判断
	if (fout == NULL)
	{
		perror("Error opening file");
		return 0;
	}
	fputc('A', fout);
	fclose(fout);


	//输入
	FILE* fin = fopen("test.txt", "r");
	//判断
	if (fin == NULL)
	{
		perror("Error opening file");
		return 0;
	}
	char c = fgetc(fin);
	printf("%c", c);
	fclose(fin);

	return 0;
}

 

          (2)fgets和fputs

       fgets

char * fgets ( char * str, int num, FILE * stream );

        fputs

int fputs ( const char * str, FILE * stream );

例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	//输出
	FILE* fout = fopen("test.txt", "w");
	//判断
	if (fout == NULL)
	{
		perror("Error opening file");
		return 0;
	}
	char arr1[] = "abcdefgh";
	fputs(arr1, fout);
	fclose(fout);


	//输入
	FILE* fin = fopen("test.txt", "r");
	//判断
	if (fin == NULL)
	{
		perror("Error opening file");
		return 0;
	}
	char arr2[10];
	fgets(arr2, 5, fin);
	printf("%s", arr2);
	fclose(fin);

	return 0;
}

        (3)fscanf和fprintf

       fscanf

int fscanf ( FILE * stream, const char * format, ... );

      fprintf

int fprintf ( FILE * stream, const char * format, ... );

例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct S
{
	int a;
	int b;
	char c;
};
int main()
{
	struct S s = { 1,15,'T' };
	struct S x;
	//输出
	FILE* fout = fopen("test.txt", "w");
	//判断
	if (fout == NULL)
	{
		perror("Error opening file");
		return 0;
	}
	fprintf(fout, "%d %d %c", s.a, s.b, s.c);
	fclose(fout);


	//输入
	FILE* fin = fopen("test.txt", "r");
	//判断
	if (fin == NULL)
	{
		perror("Error opening file");
		return 0;
	}
	fscanf(fin, "%d %d %c", &x.a, &x.b, &x.c);
	printf("%d %d %c", x.a, x.b, x.c);
	fclose(fin);

	return 0;
}

        (4)fread和fwrite

        fread:

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

        fwrite:

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

例:

	#define _CRT_SECURE_NO_WARNINGS
	#include <stdio.h>
	struct S
	{
		int a;
		int b;
		char c;
	};
	int main()
	{
		struct S s = { 2,16,'M' };
		struct S x;
		//输出
		FILE* fout = fopen("test.txt", "w");
		//判断
		if (fout == NULL)
		{
			perror("Error opening file");
			return 0;
		}
		fwrite(&s, sizeof(struct S), 1, fout);
		fclose(fout);


		//输入
		FILE* fin = fopen("test.txt", "r");
		//判断
		if (fin == NULL)
		{
			perror("Error opening file");
			return 0;
		}
		fread(&x, sizeof(struct S), 1, fin);
		printf("%d %d %c", x.a, x.b, x.c);
		fclose(fin);

		return 0;
	}

(三)文件读取结束的判定

        文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets )

  • fgetc 判断是否为 EOF
  • fgets 判断返回值是否为 NULL
  • fread判断返回值是否小于实际要读的个数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值