尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

C语言实战2

C语言实战2
📅 发布时间:2026/6/19 5:17:30

C语言实战案例:文件操作与数据结构

案例目标:
实现一个学生信息管理系统,包含文件读写、链表操作和基本增删改查功能。

文件读写与链表结合

定义学生结构体并创建链表:

typedef struct Student { int id; char name[50]; float score; struct Student *next; } Student;

文件写入函数示例:

void saveToFile(Student *head, const char *filename) { FILE *file = fopen(filename, "w"); if (!file) return; Student *current = head; while (current != NULL) { fprintf(file, "%d %s %.2f\n", current->id, current->name, current->score); current = current->next; } fclose(file); }

动态内存管理

从文件加载数据到链表:

Student* loadFromFile(const char *filename) { FILE *file = fopen(filename, "r"); if (!file) return NULL; Student *head = NULL, *tail = NULL; while (!feof(file)) { Student *newNode = (Student*)malloc(sizeof(Student)); if (fscanf(file, "%d %s %f", &newNode->id, newNode->name, &newNode->score) == 3) { newNode->next = NULL; if (!head) head = newNode; else tail->next = newNode; tail = newNode; } else { free(newNode); break; } } fclose(file); return head; }

实用功能实现

链表插入与删除操作:

void insertStudent(Student **head, int id, const char *name, float score) { Student *newNode = (Student*)malloc(sizeof(Student)); newNode->id = id; strcpy(newNode->name, name); newNode->score = score; newNode->next = *head; *head = newNode; } void deleteStudent(Student **head, int id) { Student *temp = *head, *prev = NULL; while (temp != NULL && temp->id != id) { prev = temp; temp = temp->next; } if (temp == NULL) return; if (prev == NULL) *head = temp->next; else prev->next = temp->next; free(temp); }

高级应用示例

排序功能实现(冒泡排序):

void sortByScore(Student **head) { if (!*head || !(*head)->next) return; int swapped; Student *ptr1; Student *lptr = NULL; do { swapped = 0; ptr1 = *head; while (ptr1->next != lptr) { if (ptr1->score < ptr1->next->score) { // 交换数据域 Student temp = *ptr1; ptr1->id = ptr1->next->id; strcpy(ptr1->name, ptr1->next->name); ptr1->score = ptr1->next->score; ptr1->next->id = temp.id; strcpy(ptr1->next->name, temp.name); ptr1->next->score = temp.score; swapped = 1; } ptr1 = ptr1->next; } lptr = ptr1; } while (swapped); }

错误处理增强

增加文件操作安全检查:

Student* safeLoad(const char *filename) { FILE *file = fopen(filename, "r"); if (!file) { perror("Error opening file"); return NULL; } // ...(其余加载逻辑) if (ferror(file)) { perror("Error reading file"); clearerr(file); fclose(file); return NULL; } fclose(file); return head; }

该案例完整实现了文件持久化存储、动态内存管理、链表操作等核心功能,可作为C语言中级练习的典型范例。实际开发时可进一步扩展搜索功能、界面交互等模块。

相关新闻

  • 计算机毕业设计springboot大连科技学院运动会管理系统 SpringBoot高校田径运动会综合管理平台基于 SpringBoot的校园体育赛事智能编排与成绩发布系统
  • 2025年红外热像仪行业五大实力厂商推荐,上海热像科技专业测 - myqiye
  • 破局出海新时代:石家庄企业借力外贸GEO优化,抢占全球市场先机! - 博客万

最新新闻

  • 2026苏州钻石回收实测|国标4C定级,全城无套路靠谱门店变现指南 - 薛定谔的梨花猫
  • C语言宽字符处理:wmemcmp、wmemcpy、wprintf核心函数详解与实战
  • 多模态大语言模型LISA
  • 2026长沙回收百达翡丽手表门店分级指南,一线标杆店铺评级,区分正规与小作坊 - 名奢变现站
  • 如何通过WeChatMsg实现微信聊天记录的本地化解析与数据主权保护?
  • 告别GUI开发噩梦:用Dear ImGui在30分钟内为C++项目添加专业界面

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号