当前位置: 首页 > news >正文

C语言实战2

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语言中级练习的典型范例。实际开发时可进一步扩展搜索功能、界面交互等模块。

http://www.jsqmd.com/news/76994/

相关文章:

  • 成都AI大模型代运营公司哪家好?测评成都5大代运营公司 - 百誉集团
  • 真空烘箱哪个品牌好/工业烘箱哪家好?哪家性价比高?国内品牌哪个好? - 品牌推荐大师1
  • 计算机毕业设计springboot大连科技学院运动会管理系统 SpringBoot高校田径运动会综合管理平台基于 SpringBoot的校园体育赛事智能编排与成绩发布系统
  • 2025售后完善的原木家具制造厂TOP5权威推荐:甄选企业助 - mypinpai
  • 济宁远潮影像品牌实力解析 - charlieruizvin
  • 优思学院|JIT准时制生产的核心思想
  • 2025年红外热像仪行业五大实力厂商推荐,上海热像科技专业测 - myqiye
  • 2025年12月亚克力展柜,亚克力雕刻,亚克力制品厂家推荐:异形定制案例透视 - 品牌鉴赏师
  • 破局出海新时代:石家庄企业借力外贸GEO优化,抢占全球市场先机! - 博客万
  • 2025年12月社区商户经济,社区团购经济,社区智慧化经济服务品牌推荐榜,彰显服务实力 - 品牌鉴赏师
  • 2025年德国ELBE联轴器及驱动轴供应商年度排名:ELBE - mypinpai
  • 2025年上海五大靠谱移民机构排行榜,新测评精选知名的移民品 - mypinpai
  • 泰迪智能科技案例库 | 信息技术行业项目案例合集
  • 2025年深圳电梯噪音治理公司排行榜,靠谱的电梯噪音治理公司 - myqiye
  • Java 中 new 一个对象的过程是怎么样的?
  • 2025冷却塔降噪治理厂商TOP5权威推荐:甄选专业企业破解 - myqiye
  • 2025年十大饲料分析检测单位排行榜,专业测评精选推荐 - 工业品牌热点
  • 2025年雪茄柜设计哪家口碑好?十大专业雪茄柜设计公司排名推 - 工业品牌热点
  • Spring中的注解@Scope
  • 2025年北京助听器验配机构联系电话完整汇总: 重点机构官方联系方式与专业验配服务指南 - 品牌推荐
  • TileLang实战指南:零基础避坑,3步实现GPU算子性能翻倍
  • 钛管厂家五大推荐:2025年高可靠钛材供应商选型指南(含钛板、钛棒、钛法兰、钛锻件全品类) - 深度智识库
  • 鸿蒙Electron应用工程化与性能优化实战:从开发到上线全链路
  • 人力成本直降17%!从合规风控到人效提升重构物流排班价值链
  • 抗衰葡萄籽哪个牌子好?2025十款热门葡萄籽品牌排行推荐 - 博客万
  • Cocos Engine粒子系统实战:从性能瓶颈到视觉盛宴的完整解决方案
  • 2025年北京政府食堂承包服务公司推荐:政府食堂承包服务哪家 - myqiye
  • 从规则引擎到大模型:文档生成技术的十年进化与现在的最佳实践
  • 博客主题定制终极指南:3步打造专业级个人博客
  • 【IEEE、泰国曼谷】2026年电气工程、智能控制与人工智能国际学术会议(EEICAI 2026)