news 2026/7/6 22:08:50

C语言实战2

作者头像

张小明

前端开发工程师

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 17:39:38

实力认证!塞讯科技获评2025年度普陀区创新型小巨人企业

近日&#xff0c;上海市普陀区科学技术委员会正式公示 2025 年度普陀区科技创新型小巨人企业拟立项名单&#xff0c;塞讯科技凭借突出的技术创新能力、坚实的研发实力及良好的业务发展潜力成功入选。本次“创新型小巨人企业”认定严格遵循《普陀区支持科技创新实施意见》文件精…

作者头像 李华
网站建设 2026/7/7 4:46:07

FastAPI 最佳架构实践,从混乱到优雅的进化之路

&#x1f3af; 3 分钟读完本文&#xff0c;你将获得&#xff1a; 一套开箱即用的企业级 FastAPI 项目架构解决 FastAPI 项目从 Demo 到生产的所有痛点掌握分层架构、自动迁移、缓存等最佳实践节省至少 2 周的项目搭建时间 &#x1f62b; 你是否遇到过这些问题&#xff1f; 场景…

作者头像 李华
网站建设 2026/7/7 12:49:33

光学筛选设备在汽车紧固件生产中的价值研究

在全球制造业不断朝着高精度、高一致性、高自动化方向演进的背景下&#xff0c;紧固件行业的质量稳定性成为影响整车性能与安全性的关键因素之一。作为面向全球紧固件产业的重要交流平台&#xff0c;2026第十六届上海紧固件专业展&#xff08;Fastener Expo Shanghai 2026&…

作者头像 李华
网站建设 2026/7/6 9:04:21

大语言模型性能深度测评实战手册:从基础测试到专业洞察

大语言模型性能深度测评实战手册&#xff1a;从基础测试到专业洞察 【免费下载链接】Qwen1.5 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5 在人工智能快速迭代的今天&#xff0c;准确评估大语言模型的真实能力成为技术决策的关键。本实战手册将带你深入…

作者头像 李华