用链表读写文件
将学生信息先以链表的形式存储在内存中,然后再写入到文件里,需要读取学生信息时,将文件的内容读取到链表里,然后在屏幕上显示。
// ConsoleApplication1.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
using namespace std;
typedef struct student
{
int num;
char name[11];
student *next;
}STU_T;
student *head, *tail;//头尾节点
ifstream inFile;
ofstream outFile;
void input();
void save();
void search();
int main(int argc, char *argv[])
{
head = NULL;
tail = NULL;
input();
save();
search();
system("pause");
return 0;
}
void input()
{
student *q;
q = (student *)malloc(sizeof(student));
cin >> q->num;
while (q->num != 0)//按0结束
{
cin >> q->name;
if (head == NULL)
{
head = q;
head->next = NULL;
}
if (tail != NULL)
{
tail->next = q;
}
tail = q;
tail->next = NULL;
q = (student *)malloc(sizeof(student));
cin >> q->num;
}
}
void save()
{
student *q;
outFile.open("output.txt");
for (q = head; q != NULL; q = q->next)
outFile << q->num <<' '<< q->name << endl;
outFile.close();
}
void search()
{
student *q;
q = (student *)malloc(sizeof(student));
int num = 0;
while (1)
{
cout << "请输入学号" << endl;
cin >> num;
inFile.open("output.txt");
while (! inFile.eof())
{
inFile >> q->num >> q->name;
if (q->num == num)
{
cout << q->name << endl;
break;
}
}
inFile.close();
}
}