C语言 文件函数

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

目录

1. 文件的打开和关闭

2. 文件的顺序读写

2.1 顺序读写函数介绍

2.2读文件(读文件只能读一次)

2.3写文件

3. 文件的随机读写

3.1 fseek

3.2 ftell

3.3 rewind

4.文件读取结束的判定

4.1 被错误使误的 feof


我对读写的理解:(从文件里)读--get,read,scanf ,写(到文件里)--put,write,printf

1. 文件的打开和关闭

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件

ANSI C 规定使用 fopen 函数来打开文件, fclose 来关闭文件。

//打开⽂件
FILE* fopen(const char* filename, const char* mode);
//关闭⽂件
int fclose(FILE* stream);

注意:相对路径(若没有A.txt,直接在源文件所在文件夹中创建A.txt):文件名.文件类型;如:fopen("A.txt","w");(访问源文件所在文件夹中的A.txt)

           绝对路径:文件路径+文件名.文件类型;如:fopen("D:\\code\\A.txt","w");(\\防止出现转义字符)

mode表示文件的打开模式,下面都是文件的打开模式:

C语言 文件函数,c语言

2. 文件的顺序读写

2.1 顺序读写函数介绍

C语言 文件函数,c语言

2.2读文件(读文件只能读一次)

读C.txt文件:

C语言 文件函数,c语言

#include <stdio.h>//读文件--"r",fgetc,fgets,fscanf

int main()
{
	FILE* pf = fopen("C.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	//int ch = 0;
	//while ((ch = fgetc(pf)) != EOF)//int fgetc ( FILE * stream );
	//{
	//	printf("%c", ch);
	//}

	//char arr[20] = { 0 };
    //fgets(arr, 8, pf);//char * fgets ( char * str, int num, file * stream );
    //fgets读7个字符+'\0'
    //printf("%s", arr);

	//char arr[20] = { 0 };
	//fscanf(pf, "%s", arr);//int fscanf ( FILE * stream, const char * format, ... );
	//printf("%s", arr);

	fclose(pf);
	pf = NULL;
	return 0;
}
#include <stdio.h>//读文件--"rb",fread

int main()
{
	FILE* pf = fopen("C.txt", "rb");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	char arr[20] = { 0 };
	fread(arr, sizeof(arr[0]), 4, pf);//size_t fread(void* ptr, size_t size, size_t count, FILE* stream);
	int i = 0;
	for (i = 0; i < 4; i++)
	{
		printf("%c", arr[i]);
	}
 
	fclose(pf);
	pf = NULL;
	return 0;
}

2.3写文件

要在C.txt文件中写入:

C语言 文件函数,c语言

#include <stdio.h>//写文件--"w",fputc,fputs,fprintf

int main()
{
	FILE* pf = fopen("C.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	//fputc('c', pf);//int fputc ( int character, FILE * stream );
	//fputc('f', pf);

	//fputs("cf", pf);//int fputs ( const char * str, FILE * stream );

	//fprintf(pf, "%s", "cf");//int fprintf ( FILE * stream, const char * format, ... );

	fclose(pf);
	pf = NULL;
	return 0;
}
#include <stdio.h>//写文件--"wb",fwrite

int main()
{
	FILE* pf = fopen("C.txt", "wb");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	char arr[] = "cfg";
	fwrite(arr, sizeof(arr[0]), 2, pf);//size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

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

"a""w"类似,只是"a"是在后面追加数据"w"会把之前的数据覆盖重新写数据

注意:字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储,所以“rb”可以在文本文件中读出正确的字符,"rw"可以将真确的字符写到文本文件中

3. 文件的随机读写

3.1 fseek

根据文件指针的位置和偏移量来定位文件指针。

int fseek ( FILE * stream, long int offset, int origin );

                                                   偏移量                             起始位置

SEEK_SET 文件的起始位置

SEEK_CUR 文件指针当前位置

SEEK_END 文件末尾

3.2 ftell

返回 文件指针 相对于 起始位置偏移量

 long int ftell ( FILE * stream );

3.3 rewind

文件指针的位置回到文件的起始位置

void rewind ( FILE * stream );

例子:

#include <stdio.h>//fseek,ftell,rewind

int main()
{
	FILE* pf = fopen("C.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	printf("%c", fgetc(pf));//a
	fseek(pf, 4, SEEK_CUR);//int fseek ( FILE * stream, long int offset, int origin );
	printf("%c", fgetc(pf));//f

	printf("%d", ftell(pf));//6//long int ftell ( FILE * stream );

	rewind(pf);
	printf("%c", fgetc(pf));//a//void rewind ( FILE * stream );

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

4.文件读取结束的判定

4.1 被错误使误的 feof

牢记:在文件读取过程中,不能用feof函数的返回值 直接来判断文件的是否结束

feof 的作用是:当文件读取结束的时候,判断是读取结束的原因是否是:遇到文件尾结束。

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

2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。如:fread文章来源地址https://www.toymoban.com/news/detail-851864.html

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

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包