[c语言]文件信息输入与输出

要求:

将学生信息(姓名,年龄,学号,家庭住址)写入文件,并输出某一学生信息(比如最后一个学生)

程序中所涉及的函数如下:

1:文件打开函数:fopen(欲打开的文件名称or文件路径,哪种方式)

2:文件关闭函数:fclose(文件指针)

3:文件信息写入函数(数据块):fwrite(要写入数据的地址,要写入数据项的字节数size,要写入size字节数据项的个数,文件指针)

4:文件信息读出函数(数据块):fread(要读出数据的地址,要读出数据项的字节数size,要读出size字节数据项的个数,文件指针)

5:修改文件指针位置的函数:fseek(文件指针,偏移量,从哪开始偏移)

6:读写文件出错检测的函数:ferror(文件指针)

7:文件出错标志or文件结束标志置0的函数:clearerr(文件指针)

代码如下:

#include<iostream>using namespace std;#define NAMESIZE 10#define ADDARSIZE 20#define COUNT 4#define FILENAMESIZE 10/*结构体:学生信息*/typedef struct Student{char name[NAMESIZE];int age;int stuNum;char addr[ADDARSIZE];}Student;Student student[COUNT];/*打印第n个学生的信息*/void showInfor(char *name,int n) {FILE *fp = NULL;/*if((fp = fopen(name,"r")) == NULL){cout<<"open error!"<<endl;}*/fp = fopen(name,"w+");if(ferror(fp)){cout<<"open error!"<<endl;clearerr(fp);}fseek(fp,(n-1)*sizeof(Student),0); //修改位置指针,从文件开始0(SEEK_SET)偏移(n-1)*sizeof(Student)个字节Student s;fread(&s,sizeof(Student),1,fp);//把第n个学生的信息从文件中读出并写入s中fclose(fp);fp = NULL;cout<<"name:"<<s.name<<" "<<"stuNum:"<<s.stuNum<<" ";cout<<"age:"<<s.age<<" "<<"addr:"<<s.addr<<endl;}/*把学生信息添加到文件*/void addInforToFile(char *name){FILE *fp = NULL;/*if( (fp = fopen(name,"w+")) == NULL)//1打开文件{cout<<"open error!"<<endl;}*/fp = fopen(name,"w+");if(ferror(fp)){cout<<"open error!"<<endl;clearerr(fp);}/*for(int i=0;i<COUNT;++i){fwrite(&student[i],sizeof(Student),1,fp);}//for循环的作用和下面的一句是等价的*/fwrite(student,sizeof(Student),COUNT,fp);//将信息(以块的形式)写入文件fclose(fp);fp = NULL;}int main(){for(int i=0;i<COUNT;++i){cout<<"请输入一下信息"<<endl;cout<<"name:";cin>>student[i].name;cout<<"age:";cin>>student[i].age;cout<<"stuNum";cin>>student[i].stuNum;cout<<"addar:";cin>>student[i].addr;}cout<<"请输入文件的名称:" ;char fileName[FILENAMESIZE];cin>>fileName;addInforToFile(fileName);cout<<"你想输出第几个学生的信息:";int n;cin>>n;showInfor(fileName,n);return 0;}

注意:涉及文件操作时要注意以下几点

a:定义文件指针时,将指针指向空,即FILE *fp = NULL;

b:fopen()与fclose()函数成对使用,,否则会造成文件所占内存泄露以及在下次访问文件时出现错误;

c: 文件关闭后,将文件指针赋值为空,防止出现游离指针,对整个工程造成不必要的麻烦

而只有在充满了艰辛的人生旅途中,

[c语言]文件信息输入与输出

相关文章:

你感兴趣的文章:

标签云: