⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pointer_file.cpp

📁 其他人不需帐号就可自由下载此个C或Java源
💻 CPP
字号:
#include "stdafx.h"

struct studentinfo
{
	int no;        //学号
	char name[15]; //姓名
	float score[3];  //三门课程的成绩
	float avr;    //平均成绩
};

typedef studentinfo STUDENT;

// 输出单个学生的信息
void outPutStudent(STUDENT student)
{	
	printf("################ 学生信息为 ############## \n");
	printf("%d %s %.2f %.2f %.2f %.2f\n", student.no, student.name, student.avr, student.score[0],student.score[1], student.score[2]);
}

// 将数据写到(文本)文件 , 针对一个自定义数据类型的情况
void writeFile(char* file_name, char* mode, STUDENT student)
{
	FILE *out;
	int i = 0;
	if((out = fopen(file_name, mode)) == NULL)
	{
		printf( "cannot open %s\n", file_name );
		//exit(1);
	}
	// fprintf(); 
	 
	int count1 = fwrite(&student, sizeof(STUDENT), 1, out);
	printf("count = %d\n", count1);
	 
	fclose(out);	
}

// 将数据从(文本)文件中读取,可以一个返回结构体类型的数据
STUDENT readFile(char* file_name, char* mode)
{
	FILE* read;
	//char buffer[1024];
	if((read = fopen( file_name, mode )) == NULL )
	//r read,w write,t textmode,b binary mode
	{
		printf("can not open %s\n", file_name);
		//exit(1);
	}
	STUDENT student;
	/*
	C语言还提供了用于整块数据的读写函数。 可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp); 写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp); 其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。 size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。
	*/ 
	fread(&student, sizeof(STUDENT), 1, read); // 读取一个结构体类型的数据
		 
	fclose( read );
	outPutStudent(student); // 测试输出信息
	return student;
}
// 读取多个学生的信息
void readFile(char* file_name, char* mode, int count)
{
	FILE* read;
	char buffer[ 1024 ];
	if((read = fopen( file_name, mode )) == NULL )
	//r read,w write,t textmode,b binary mode
	{
		printf("can not open %s\n", file_name);
		exit(1);
	}
	STUDENT student[N];
	for (int i = 0; i < count; i++ )
	{ 
		fread(&student[i], sizeof(STUDENT), 1, read); // 读取一个结构体类型的数据		 
	}
	printf("i = %d\n", i);
	outPutStudent(student, i); // 输出多个学生信息
	
	// while(fgets(buffer, 1024, in) != NULL )
	//	printf("%s", buffer );	 
	fclose( read );
}


// 将多个学生的信息写到文本文件
void writeFile(char* file_name, char* mode, STUDENT student[], int count)
{
	FILE *out;
	int i = 0;
	if((out = fopen(file_name, mode)) == NULL)
	{
		printf( "cannot open %s\n", file_name );
		exit(1);
	}
	// fprintf(); 
	for (int i = 0; i < count; i++) // 依次写入文件
	{
		int count1 = fwrite(&student[i], sizeof(STUDENT), 1, out);
		printf("count = %d\n", count1);
	}
	fclose(out);	
}

void testFile()
{
	STUDENT student = {
	102, "imti 英泰 ", 99.3, 89.7, 100,(99.3+89.7+100)/3 };

	writeFile("student.txt", "w", student);// 写
	readFile("student.txt", "r"); //读
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -