C语言文件操作

1 文件打开

EG:

#include<stdio.h>

int main()
{
	//文件的打开
		//FILE 是一种文件类型,下面的fp是一个文件指针
		//fopen("参数一","参数二")   
			//参数一:文件名,可以包含路径你,如果没有路径则默认从当前可执行文件查找该文件
			//参数二:打开文件的方式
			//如果打开文件失败则返回NULL,成功则返回文件指针
	FILE *fp = fopen("test.txt", "w");

	//如果流成功关闭,fclose 返回 0,否则返回EOF(EOF是系统的一个宏,值位-1,全称为 End of File)。
	//打开文件必须关闭:
		//1.防止内存泄漏
		//2.刷新缓冲区,防止写入的数据在缓冲区保存,没有写入文件
	if (fclose(fp) && fp!= NULL)
	{
		perror("close file error!");
	}

	return 0;
}

在这里插入图片描述

在这里插入图片描述

2 fgets与fputs

 2.1 fputs函数

EG:

#include<stdio.h>
#include<string.h>

int main()
{

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

	if (fp != NULL)
	{
		char s[] = "China";
		int len = strlen(s);
		for (int i = 0; i < len; i++)
		{
			//fputc(字符,文件指针);  1.写入成功,则返回写入字符的ASCII码  2.如果写入失败则返回EOF
			if (fputc(s[i], fp) == EOF)
			{
				perror("write file error!");
				break;
			}
		}
	}

	if (fclose(fp) && fp!= NULL)
	{
		perror("close file error!");
	}

	return 0;
}

2.2 fgetc函数

EG:

#include<stdio.h>
#include<string.h>

int main()
{

	FILE *fp = fopen("test.txt", "r");

	if (fp != NULL)
	{
		//char ch = fgetc(fp)  1.数据读出成功则返回改读出字符  2.如果数据读出失败或则读到文件末尾则返回EOF
		char ch = fgetc(fp);

		//feof(fp)  判断文件是否督导末尾 1.如果读到末尾则返回1,否则返回0  2.为什么不用EOF这个宏来判断文件是否读到末尾,因为二进制读出文件时有可能其文件内容为-1,但此时不代表读到文件末尾
		while (!feof(fp)) 
		{
			printf("%c", ch);
			ch = fgetc(fp);
		}
	}

	if (fclose(fp) && fp!= NULL)
	{
		perror("close file error!");
	}

	return 0;
}

2.3 关于文件操作的其它函数

            

3 实战代码操练

 EG:

#include<stdio.h>
#include<string.h>

int main()
{

	FILE *fp = fopen("test.txt", "r");

	if (fp != NULL)
	{
		char LineBuffer[1024];
		while (!feof(fp))
		{
			LineBuffer[0] = 0;
			//读取一行遇到换行符结束
			if (fgets(LineBuffer, sizeof(LineBuffer) - 1, fp) == NULL)
				continue;

			if (LineBuffer[0] == 0)
				continue;

		Rstring:
			if (strlen(LineBuffer) >= 0) //读取的不是空
			{
				if (LineBuffer[strlen(LineBuffer) - 1] == 10 || LineBuffer[strlen(LineBuffer) - 1] == 10)
				{
					LineBuffer[strlen(LineBuffer) - 1] = 0;  //将末尾读取的换行或者回车拿掉
					goto Rstring;
				}
			}

			if (strlen(LineBuffer) <= 0)
				continue;

			printf("%s\n", LineBuffer);
		}
	}

	if (fclose(fp) && fp!= NULL)
	{
		perror("close file error!");
	}

	return 0;
}

4 将C语言类型数据写入文件再读出

EG:

#include<stdio.h>

int main()
{
	double a[2] = { 3,5 };  //将此数据写入文件
	double a1[2];  //将写入的文件读出
	  //不一定必须是double,结构体也可以

	//打开一个文件,将a数组写入文件
	FILE *fp = fopen("test.bin", "wb");

	if (fp != NULL)
	{
		int result = fwrite(a, sizeof(double), 2, fp); //写入
		fclose(fp);
	}
	fp = fopen("test.bin", "rb");
	if (fp != NULL)
	{
		int result = fread(a1, sizeof(a1), 2, fp);  //读出
		fclose(fp);
	}
	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值