C语言 文件操作实现成绩排序

前言

        彩笔写个大作业每个功能都要卡好久。唉,带专人太难了,呜呜呜。

        吐槽:chatgpt不靠谱,我改了一下,让它能跑起来。

程序要求

        1. 输入学生姓名,成绩(连续两个空格换行),并保存在./score.txt中。

        2. 将./score.txt中的成绩由大到小排序,赋上排名,覆盖原有文件。

        3. 按成绩由大到小打印。

代码 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
//成绩写入,读取排名
struct student {char name[20];int score;int rank;
};int compare_students(const void *a, const void *b){struct student *s1 = (struct student *)a;struct student *s2 = (struct student *)b;return s2->score - s1->score;//后面大于前面就置换 
}int main() {struct student students[MAX_STUDENTS],a[MAX_STUDENTS];
//不知道为啥,上面的结构体赋初值(0)会导致没法结束输入int num_students = 0; int i=0,j;char ch;int hnum;//写 FILE *file = fopen(".//score.txt", "a+");if(file==NULL){file=fopen(".//score.txt","wb+");}while(i<10){int w=0;//每行第几字符 while((ch=getchar())!=' '){if(ch=='\n'){hnum+=1;}else{hnum=0;//不是连续的两个\n就清零 	}if(hnum==2){break;}else if(hnum==1){continue;//防止数组存入\n}		a[i].name[w]=ch;w++;}a[i].name[w]='\0';//数组末尾补0		if(hnum==2){break;}	scanf("%d",&a[i].score);a[i].rank=0;i++;}for(j=0;j<i;j++){fwrite(&a[j],1,sizeof(struct student),file);}fclose(file);
//下面开始排序 file = fopen(".//score.txt", "r");if(file==NULL){printf("Unable to open file.\n");}
//文件读操作(fread),必须先读一次再接while循环判断是否到文件末尾,不然下面for会多一次fread(&students[num_students], sizeof(struct student), 1, file);while(!feof(file)){num_students++;fread(&students[num_students], sizeof(struct student), 1, file);}fclose(file);qsort(students, num_students, sizeof(struct student), compare_students);//从大到小排序 for (i = 0; i < num_students; i++) {students[i].rank = i + 1;}file = fopen(".//score.txt", "w+");if (file == NULL) {printf("Unable to open file.\n");return 1;}for (i = 0; i < num_students; i++) {fwrite(&students[i],1,sizeof(struct student),file);}fclose(file);	
//打印排名 file = fopen(".//score.txt", "r");printf("Students sorted by rank:\n");fread(&students[j],1,sizeof(struct student),file);while (!feof(file)) {	printf("%d. %s: %d\n", students[j].rank, students[j].name, students[j].score);fread(&students[j],1,sizeof(struct student),file);}fclose(file);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16788.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python编译器怎么换行

Python编译器怎么换行 在编写代码时&#xff0c;换行是非常重要的&#xff0c;可以使得代码更加清晰易懂&#xff0c;提高代码的可读性&#xff0c;Python编译器也不例外。但是对于一些新手来说&#xff0c;可能不太了解Python编译器中如何实现换行操作。在本文中&#xff0c;…

Linux操作命令-服务端测试

服务端测试&#xff0c;经常要用到linux命令查看日志&#xff0c;查看文件&#xff0c;故写此博客记录一下。linux还是应该多练习&#xff0c;在牛客网上有SHELL编程题&#xff0c;可以去练一练。 牛客网在线编程_SHELL篇_SHELL篇牛客网在线编程SHELL篇-SHELL篇提供超多数据结…

python自动化办公——python操作Excel、Word、PDF集合大全

本文是鉴于有些粉丝的工作需求&#xff0c;有时候需要遇到这些文件的处理。因此&#xff0c;我写了一个文章集合&#xff0c;供大家参考&#xff0c;整篇文章已经整理成书册。&#x1f447;&#x1f447;&#x1f447; 戳我领取《Python自动化大全》 戳我领取《Python自动化大全…

京东商城主图视频抓取的方法步骤

如何抓取京东商城的主图视频呢&#xff1f; 步骤1&#xff1a;首先&#xff0c;打开电商图片助手软件&#xff0c;浏览主页面 步骤2&#xff1a;把需要的京东商城商品链接复制到软件上 步骤3&#xff1a;然后再主页面下方勾选需要的选项 步骤4&#xff1a;勾选好后&#xff…

扒站工具推荐

文章目录 背景推荐程序小结 背景 网络爬行&#xff08;也称为网络抓取&#xff09;在当今的许多领域得到广泛应用。它的目标是从任何网站获取新的或更新的数据并存储数据以便于访问。Web爬虫工具越来越为人所知&#xff0c;因为Web爬虫简化并自动化了整个爬网过程&#xff0c;…

人工智能和AI到底是什么??浅谈人工智能和AI

文章目录 我们每天所谈论的人工智能&#xff0c;究竟是什么&#xff1f;我们正处于AI时代&#xff1a;衣食住行中的AI 什么是人工智能&#xff1f;AI对传统行业的冲击AI对广告行业和媒体行业的冲击AI对教育行业的影响AI对艺术创作行业的影响AI对物流行业和工业行业的影响 我们每…

Guitar Pro8(简称GTP8)正式版吉他谱神器

大家好&#xff0c;Guitar Pro8绝对是学习吉他的好帮手&#xff0c;它是法国人编写的&#xff0c;现在已经有了Guitar Pro8只有几兆大&#xff0c;安装也很简单&#xff0c;可以编辑或打开GTP格式的乐谱&#xff0c;打开后就是六线谱&#xff0c;点击演奏按钮&#xff0c;软件就…

Android Gradle插件对应的Gradle所需版本

Gradle插件对应的Gradle所需版本 插件版本 需要的 Gradle 版本 4.2.0 6.7.1 4.1.0 6.5 4.0.0 6.1.1 3.6.0 - 3.6.4 5.6.4 3.5.0 - 3.5.4 5.4.1 3.4.0 - 3.4.3 5.1.1 3.3.0 - 3.3.3 4.10.1 3.2.0 - 3.2.1 4.6 3.1.0 4.4 3.0.0 4.1 2.3.0 3.3 2.1.3 - 2.…

爬取京东商品详情页信息

之前写过爬取京东商品导航信息&#xff0c;现在献上爬取京东商品详情页信息。 #爬取京东商品详情页信息 #2017/7/30import requests from bs4 import BeautifulSoup import os import csv import re import json import time#爬取页面链接 def make_a_link(keyword,page):try:r…

利用Python爬虫爬取京东商品的简要信息

转自本人博客园博客&#xff1a;https://www.cnblogs.com/JYU-hsy/p/9673454.html 目录 一、前言 二、何为爬虫 三、JD商品详情页的网页分析 3.1详情页上指向的其他URL 3.2商品名称、价格 四、简单爬虫框架 1.爬虫总调度程序 2.URL管理器 3.HTML下载器 4.HTML解析器 5.输出…

智能车浅谈——抗干扰技术软件篇

文章目录 软件抗干扰技术数字信号的抗干扰措施数字输入信号软件抗干扰措施数字输出信号软件抗干扰措施数字滤波算术平均值滤波中值滤波滑动平均滤波归一化差比和 CPU及程序的抗干扰措施复位掉电保护Watchdog技术 总结智能车系列文章汇总 软件抗干扰技术 前面介绍了一些硬件抗干…

人工智能中RPA、NLP、OCR介绍

1、NLP 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。主要研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机、于一体的。因此&#xff0c;这一领域的研究将涉及自然…

最新php在线扒站程序源码分享

介绍&#xff1a; 目前很火的在线扒站程序&#xff0c;免服务器&#xff0c;全站整体无shua新&#xff0c;很友好。 搭建说明&#xff1a; 上传到服务器/虚拟主机即可&#xff0c;无需数据库&#xff0c;仅占180k&#xff0c;ajax.php有能力的修改&#xff0c;index.html看到版…

凭什么国内造不出高端示波器?一起扒一扒示波器的发展史!

我是小麦&#xff0c;一名热爱电子技术的工程师 关注我&#xff0c;一起变得更加优秀&#xff01; 示波器作为电测行业最基本的综合性仪器&#xff0c;设计和制造他所涉及的领域也十分广泛,从半导体到特种材料&#xff0c;从机加工到电子设计无所不涉及。这就需要强大完善的工业…

掌握这些,你也可以轻松扒谱(下)

如果你只想要扒取歌曲的演唱旋律&#xff0c;那只需要看《掌握这些&#xff0c;你也可以轻松扒谱&#xff08;上&#xff09;》这篇文章就可以啦~ 但是如果你需要扒取音乐的伴奏&#xff0c;那就需要观看下方的内容继续学习啦~ 1.练习听分解和弦 如果我们想扒取歌曲的伴奏旋律…

【计算机视觉】pycharm自制一个吉他扒谱软件(附源码)

【计算机视觉】pycharm自制一个吉他扒谱软件&#xff08;附源码&#xff09; 构思起源结果展示吉他音频和图片附件可以从我的git上下载源码 构思起源 作为一个深度吉他爱好者&#xff0c;拥有一个自制的扒谱软件真是梦寐以求的事情&#xff0c;以前扒谱还要手画六线谱&#xf…

在线扒站源码

介绍&#xff1a; 上传就可以用 网盘下载地址&#xff1a; http://kekewl.org/zT7gE9VEwUT 图片&#xff1a;

如果你不会扒谱,来吧,这款软件给你超能力

我大学时期同寝室的一个同学&#xff0c;弹得一手好吉他。最让我们佩服的事&#xff0c;可以把任意一首歌的歌谱扒出来&#xff01;每年联欢会&#xff0c;我们选个歌&#xff0c;他就能很快把谱子扒出来&#xff0c;大家就可以拿着各种乐器开始准备表演节目。这个技能一直让我…

想要快速扒谱?快来掌握这些小技巧吧!

相信喜欢音乐的小伙伴们都遇见过这样的事情&#xff0c;有时候我们听到了一手非常好听的歌曲&#xff0c;自己也想要翻唱它&#xff0c;结果在网上找了半天&#xff0c;也没有找到这首歌曲的谱子&#xff0c;于是我们只能非常遗憾的错过了它。 这时候我们不妨来卷起袖子试试自己…

听音扒谱app_掌握这些,你也可以轻松扒谱(下)

如果你只想要扒取歌曲的演唱旋律&#xff0c;那只需要看《掌握这些&#xff0c;你也可以轻松扒谱(上)》这篇文章就可以啦~ 但是如果你需要扒取音乐的伴奏&#xff0c;那就需要观看下方的内容继续学习啦~ 图片来自EarMaster中文官网 1.练习听分解和弦 如果我们想扒取歌曲的伴奏旋…