有关文件的保存与输出

1.存取文本文件

有关知识:fwrite:把内存的数据写在文件

                  求字符串长度用函数strlen()

int main()
{
	FILE* fw = fopen("D:\\4.txt", "wb");//w访问文本文件,wb访问二进制文件和文本文件
	assert(fw != NULL);
	const char* str = "hello world";
	fwrite(str, sizeof(char), strlen(str), fw);//strlen()用来计算字符串长度
	fclose(fw);
}

2.读取文本数据

有关知识:fread:把文件的数据读到内存,返回值很重要,通常需要定义同类型的变量来保存文件的数据

int main()
{
	FILE* fr = fopen("D:\\4.txt", "rb");
	assert(fr != NULL);
	char buf[100]="";//加""是为了加\0
	int len=fread(buf, sizeof(char), 100, fr);
	printf("%d %s", len, buf);
	fclose(fr);
	return 0;
}

3.把整形数组的数据写到文件

有关知识:求整形数组长度用sizeof(arr)/sizeof(arr[0])

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	FILE* fw = fopen("D:\\2.txt", "wb");
	assert(fw != NULL);
	fwrite(arr, sizeof(int), sizeof(arr) / sizeof(arr[0]), fw);//strlen用来求字符串长度,sizeof(arr)/sizeof(arr[0])
	fclose(fw);
	return 0;
}

4.从二进制文件中读取数据,并输出到屏幕

有关知识:用for循环输出数组

int main()
{
	FILE* fr = fopen("D:\\2.txt", "rb");
	assert(fr != NULL);
	int buf;//第一种方法
	int len;
	while (len = fread(&buf, sizeof(int), 1, fr) > 0)
	{
		printf("%d ",buf);//buf时一个一个输出的
		
	}
	//fclose(fr);
	//int buf[10];//第二种方法
	//int len=fread(buf, sizeof(int), 10, fr);
	//for (int i = 0; i < len; i++)
	//{
	//	printf("%d ", buf[i]);//输出整形数组
	//}
	//return 0;
}   

5.定义学生结构,把学生信息存到文件中,并且从屏幕中输出

typedef struct Student
{
	char name[10];
	int age;
}Student;
//从键盘中取学生信息
void Input(Student* ps, int len)
{
	for (int i = 0; i < len; i++)
	{
		scanf("%s %d", &ps[i].name, &ps[i].age);
	}
}
//把学生信息保存到文件中
void Save(Student* ps, int len)
{
	const char* path = "D:\\stu.txt";
	FILE* fw = fopen(path, "wb");
	assert(fw != NULL);
	fwrite(ps, sizeof(Student), len, fw);//ps是数组不用加&,ps指向学生数据,一个数据类型的为Student
	fclose(fw);
}
//把文件的内容输出到屏幕
void Show()
{
	const char* path = "D:\\stu.txt";
	FILE* fr = fopen(path, "rb");
	assert(fr != NULL);
	Student stu;//相当于定义一个buf来存放学生数据
	printf("输出学生信息:\n");
	while (fread(&stu, sizeof(Student), 1, fr) > 0)
	{
		printf("%s %d\n", stu.name, stu.age);
	}
	fclose(fr);
}

int main()
{
	Student arr[5];
	Input(arr, sizeof(arr) / sizeof(arr[0]));
	Save(arr, sizeof(arr) / sizeof(arr[0]));
	Show();
}

6.文件的复制

oid FILECopy(const char* despath, const char* srcpath)
{
	FILE* fr = fopen(srcpath, "rb");
	FILE* fw = fopen(despath, "wb");
	assert(fr != NULL && fw != NULL);
	char buf[100];
	int len;
	while (len=fread(buf, sizeof(char), 100, fr) > 0)
	{
		fwrite(buf, sizeof(char), len, fw);
	}
	fclose(fr);
	fclose(fw);
}
int main()
{
	FILECopy("D:\\2.cpp", "D:\\1.cpp");
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值