写一段代码,将链表中的内容写入文件,并保存在文件中
时间: 2023-05-28 22:07:08 浏览: 101
假设链表的节点结构体定义如下:
```c++
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
则将链表内容写入文件的代码如下:
```c++
#include <iostream>
#include <fstream>
void writeListToFile(ListNode* head, std::string filename) {
std::ofstream file(filename);
if (!file.is_open()) {
std::cout << "Failed to open file: " << filename << std::endl;
return;
}
while (head != NULL) {
file << head->val << " ";
head = head->next;
}
file.close();
std::cout << "Successfully wrote list to file: " << filename << std::endl;
}
```
该函数接收一个链表的头节点指针和一个文件名参数,将链表中的每个节点的值写入文件,每个值之间用空格分隔。如果文件打开失败,则输出一条错误信息。函数执行完毕后,输出一条成功写入文件的信息。
相关问题
成绩记录簿 编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能: (1)创建信息链表并以磁盘文件保存; (2)读取磁盘文件并显示输出所有学生的成绩; (3)按学号或姓名查询成绩; (4)添加成绩记录; (5)修改指定姓名或学号的学生的成绩并可存盘; (6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。
答案:非常好,这是一个标准的C语言管理系统的实现,我很高兴为您提供帮助。以下是具体实现步骤:
(1) 根据需要创建一个包含学号、姓名和成绩的学生结构体,并在结构体中添加成员变量。
(2) 在主函数中,创建一个链表结构体,用于存储所有学生的信息,并且将数据保存到磁盘文件中。
(3) 读取磁盘文件并显示输出所有学生的成绩。您可以使用fopen()函数打开文件,使用fscanf()函数从文件中读取数据,并使用printf()函数在屏幕上输出学生信息。
(4) 按学号或姓名查询成绩。您可以使用strcmp()函数比较学生姓名或学号,并使用if语句来确定是否有匹配学生信息。
(5) 添加成绩记录。您可以使用malloc()函数为新的学生信息分配内存空间,并将新的学生信息链接到已有的学生信息结构体中。
(6) 修改指定姓名或学号的学生的成绩并可存盘。您可以使用strcmp()函数来比较学生姓名或学号,并使用if语句来确定是否有匹配学生信息。修改学生成绩后,使用fopen()函数打开磁盘文件,并使用fprintf()函数将修改后的成绩写入文件中。
(7) 显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。您可以使用if语句的嵌套语法来确定学生分数所属的分数段。
要注意的是,在代码实现的过程中,需要注意代码的可读性、健壮性以及安全性。
void Save_Book() /* 保存图书信息 */ { FILE *fp_book; /*创建文件型指针 */ BK *p,*p0; p=h_book; if((fp_book=fopen("Book.txt","wb"))==NULL) /*创建文件 ,进行保存 */ { printf("\n 文件保存失败 !\n 请重新启动本系统 ...\n"); exit(0); } while(p!=NULL) { if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*将链表中的
图书信息写入文件,如果写入失败则输出错误信息*/ { printf("\n 文件写入失败 !\n 请重新启动本系统 ...\n"); exit(0); } p0=p; p=p->next; free(p0); /*释放p0所指向的节点*/ } fclose(fp_book); /*关闭文件*/ printf("\n 图书信息保存成功 !\n"); }
这段代码的作用是保存图书信息到文件中。程序首先创建一个文件型指针fp_book,然后将链表中的每个节点的图书信息写入文件。如果写入失败,程序会输出错误信息并退出。最后,程序释放链表中的所有节点并关闭文件,输出保存成功信息。
阅读全文