文件操作板子
文件操作板子
- 基础知识(具体见《高级设计语言》P173)
- 1、fopen打开文件,切记,一定是和fclose对应出现,有打开必然要有关闭
- 2、fclose关闭文件
- 3、文件打开的各种形式
- 4、fgetc、fputc
- 5、fgets、fputs
- 6、fscanf、fprintf格式化读写
- 7、文件读写指针操作:rewind、fseek
- 8、文件读写指针操作:ftell、feof
- 9、fread、fwrite
- 具体题目
- 计专2019(P88)
- 思路
- 代码
基础知识(具体见《高级设计语言》P173)
1、fopen打开文件,切记,一定是和fclose对应出现,有打开必然要有关闭
2、fclose关闭文件
3、文件打开的各种形式
4、fgetc、fputc
5、fgets、fputs
6、fscanf、fprintf格式化读写
7、文件读写指针操作:rewind、fseek
8、文件读写指针操作:ftell、feof
9、fread、fwrite
具体题目
计专2019(P88)
思路
1、根据教师信息的格式构建结构体,为创建链表做准备
typedef struct teacher {//根据文件之中每条信息的格式,建立结构体,数据类型得具体按照题意设置
char workNum[10];
int sex;
char name[20];
int year;
teacher* next;
}teacher;
2、打开文件
FILE* fp = fopen("input.txt", "r");//fopen,传入文件名称,读写方式,返回一个file类型的指针
3、用格式化fscaf读取数据
注意:%s不用&符号,%d需要&符号,和scanf规则一致
fscanf(fp, "%s,%d,%s,%d", tmp->workNum, &tmp->sex, tmp->name, &tmp->year);
4、判断是否读取完毕
if (feof(fp)) {//判断是否读取完毕
break;
}
5、最后一定要把文件关闭
fclose(fp); //记得关闭文件,否则可能会是扣分点(有开就有关)
代码
#include <iostream>
#include <string>
#include <stack>
#include <queue>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
typedef struct teacher {//根据文件之中每条信息的格式,建立结构体,数据类型得具体按照题意设置
char workNum[10];
int sex;
char name[20];
int year;
teacher* next;
}teacher;
teacher* function_three() {
FILE* fp = fopen("input.txt", "r");//fopen,传入文件名称,读写方式,返回一个file类型的指针
teacher* head = (teacher*)malloc(sizeof(teacher));//建立哨兵节点(利用头插法,少一个指针,方便控制)
while (1) {//开始读取数据
teacher* tmp = (teacher*)malloc(sizeof(teacher));//建立节点,准备接收数据
//用fscanf读取数据,参数文件指针,后两项和scanf一样
fscanf(fp, "%s,%d,%s,%d", tmp->workNum, &tmp->sex, tmp->name, &tmp->year);
if (feof(fp)) {//判断是否读取完毕
break;
}
//开始头插法,插入到哨兵节点后面
tmp->next = head->next;
head->next = tmp;
}
fclose(fp); //记得关闭文件,否则可能会是扣分点(有开就有关)
return head;
}