c语言 文件写入和读取
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #define N 10
- struct student{ /* 学生信息结构 */
- char no[]; /* 学号 */
- char name[]; /* 姓名 */
- char sex[]; /* 性别 */
- int score[]; /* 成绩和总分 */
- };
- int menu(); /* 菜单*/
- void readsi(struct student stud[],int *n); /* 读取数据*/
- void printsi(struct student *pstud,int n); /* 输出文件内容*/
- void ssort(struct student *pstud, int n); /*按总分的降序排序函数 */
- void xsort(struct student *pstud, int n);/*按学号的升序排序函数 */
- void tjave(struct student *pstud, int n);/*统计各门功课的平均分函数 */
- void tjrs(struct student *pstud,int n);/*统计男女同学的人数函数 */
- void namesort(struct student *pstud,int n);/*按姓名升序排序 */
- void math_excellent(struct student *pstud,int n);/*数学考试成绩优秀(>=90)*/
- void all_excellent(struct student *pstud,int n);/*每门考试成绩优秀(>=90)或者总分》=270*/
- void main() /* 主函数 */
- {
- struct student stud[N];
- int code, n=;
- readsi(stud,&n);
- printf("\n 按<Enter>, 进入菜单: ");
- scanf("%*c"); /* 暂停 */
- while()
- {
- code=menu(); /* 调用主控菜单 */
- switch(code)
- {
- case : exit();
- case : printsi(stud,n);
- printf("\n 按<Enter>, 进入菜单: ");
- scanf("%*c");
- break;
- case : ssort(stud,n);break;
- case : xsort(stud,n);break;
- case : tjave(stud,n);break;
- case : tjrs(stud,n);break;
- case : namesort(stud,n);break;
- case : math_excellent(stud,n);break;
- case : all_excellent(stud,n);break;
- } scanf("%*c");
- }
- }
- int menu() /* 主控菜单函数 */
- {
- int code;
- printf(" 菜 单\n");
- printf(" *****************************************************\n");
- printf(" 0. 退出 1. 显示学生信息 \n");
- printf(" 2. 按总分排序 3. 按学号排序\n");
- printf(" 4. 统计各门功课平均分 5. 统计男女同学人数\n");
- printf(" 6. 按姓名排序 7. 数学考试成绩优秀人数\n");
- printf(" 8. 考试成绩优秀人数 \n");
- printf(" *****************************************************\n");
- printf(" 请按序号选择:\n");
- scanf("%d",&code);
- return code;
- }
- void readsi(struct student stud[],int *n) /* 读数据函数 */ //int *n;n需要返回
- {
- FILE *fp;
- int i;
- // if((fp=fopen("studf.txt","r"))==NULL)
- if((fp=fopen("C:/Users/minmin/Desktop/studf.txt","r"))==NULL)//文件存放在指定路径,把路径写上就可以了
- {
- printf("Cannot open file!\n");
- exit();
- }
- for(i=;!feof(fp);i++)
- {
- (*n)++;
- fscanf(fp,"%s %s %s %d %d %d %d", stud[i].no,stud[i].name,stud[i].sex,
- &stud[i].score[], &stud[i].score[], &stud[i].score[], &stud[i].score[]);
- stud[i].score[]=stud[i].score[]+stud[i].score[]+stud[i].score[];
- }
- fclose(fp);
- }
- void printsi(struct student *pstud, int n) /* 输出数据函数 */
- {
- int i;
- printf(" 学号 姓名 性别 数学 英语 C 总分\n");
- printf("******************************************************\n");
- for(i=;i<n;i++)
- {
- printf("%-8s %-8s %-2s %4d %4d %4d %4d\n", pstud[i].no,pstud[i].name,pstud[i].sex,
- pstud[i].score[], pstud[i].score[], pstud[i].score[], pstud[i].score[]);
- }
- }
- void ssort(struct student *pstud,int n) /*按总分的降序排序函数 */
- {
- struct student temp;
- int i,j,min;
- for(i=;i<n;i++)
- {
- min=i; /* 找最小值元素的下标*/
- for(j=i+;j<n;j++)
- if(pstud[j].score[]>pstud[min].score[]) min=j;
- if(min!=i) /* 交换 */
- {
- temp=pstud[i]; pstud[i]=pstud[min]; pstud[min]=temp;
- }
- }
- }
- void xsort(struct student *pstud,int n) /*按学号的升序排序函数 */
- {
- struct student temp;
- int i, j;
- for(i=;i<n-;i++)
- {
- for(j=i+;j<n;j++)
- {
- if(strcmp(pstud[i].no,pstud[j].no)>)
- {
- temp=pstud[i];
- pstud[i]=pstud[j];
- pstud[j]=temp;
- }
- }
- }
- }
- void tjave(struct student *pstud, int n) /*统计各门功课的平均分函数 */
- {
- float avemath=,aveeng=,avec=,avesum=;
- int i;
- for(i=;i<n;i++)
- {
- avemath+=pstud[i].score[];
- aveeng+=pstud[i].score[];
- avec+=pstud[i].score[];
- avesum+=pstud[i].score[];
- }
- avemath/=n; aveeng/=n; avec/=n; avesum/=n;
- printf("共有%d个同学,各门功课及总分的平均分为:\n",n);
- printf(" 数学 英语 C 总分\n");
- printf("%5.2f %5.2f %5.2f %5.2f\n",avemath,aveeng,avec,avesum);
- }
- void tjrs(struct student *pstud,int n) /*统计男女同学的人数函数 */
- {
- int i, nummen=, numwomen=;
- for(i=;i<n;i++)
- {
- if(strcmp(pstud[i].sex,"男")==) nummen++;
- else numwomen++;
- }
- printf(" 共有%d个同学: \n",n);
- printf(" 其中男同学有%d个,女同学有%d个\n",nummen,numwomen);
- }
- void namesort(struct student *pstud,int n)/*按姓名升序排序 */
- {
- struct student temp;
- int i, j;
- for(i=;i<n;i++)
- {
- for(j=i+;j<n;j++)
- {
- if(strcmp(pstud[i].name,pstud[j].name)>)
- {
- temp=pstud[i];
- pstud[i]=pstud[j];
- pstud[j]=temp;
- }
- }
- }
- }
- void math_excellent(struct student *pstud,int n)/*数学考试成绩优秀(>=90)*/
- {
- int i, num = ;
- for(i=;i<n;i++)
- {
- if(pstud[i].score[]>=)
- {
- num++;
- printf("%-8s %-8s %-2s %4d %4d %4d %4d\n", pstud[i].no,pstud[i].name,pstud[i].sex,
- pstud[i].score[], pstud[i].score[], pstud[i].score[], pstud[i].score[]);
- }
- }
- printf("数学优秀的人数为:%d\n",num);
- }
- void all_excellent(struct student *pstud,int n)/*每门考试成绩优秀(>=90)或者总分》=270*/
- {
- int i, num = ;
- for(i=;i<n;i++)
- {
- if(((pstud[i].score[]>=)&&(pstud[i].score[]>=)&&(pstud[i].score[]>=))||(pstud[i].score[]>=))
- {
- num++;
- printf("%-8s %-8s %-2s %4d %4d %4d %4d\n", pstud[i].no,pstud[i].name,pstud[i].sex,
- pstud[i].score[], pstud[i].score[], pstud[i].score[], pstud[i].score[]);
- }
- }
- printf("优秀的人数为:%d\n",num);
- }
c语言 文件写入和读取的更多相关文章
- Python学习笔记——文件写入和读取
1.文件写入 #coding:utf-8 #!/usr/bin/env python 'makeTextPyhton.py -- create text file' import os ls = os ...
- 【PHP】文件写入和读取详解
文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 六.Windows和UNIX下的回车和换 ...
- Java文件写入与读取实例求最大子数组
出现bug的点:输入数组无限大: 输入的整数,量大: 解决方案:向文件中输入随机数组,大小范围与量都可以控制. 源代码: import java.io.BufferedReader; import j ...
- PHP 文件写入和读取(必看篇)
文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 六.Windows和UNIX下的回车和换 ...
- sql注入文件写入和读取
系统固定文件路径:https://blog.csdn.net/ncafei/article/details/54616826 /etc/passwd c:/windows/win.ini 文件读取使用 ...
- 从PCD文件写入和读取点云数据
(1)学习向PCD文件写入点云数据 建立工程文件ch2,然后新建write_pcd.cpp CMakeLists.txt两个文件 write_pcd.cpp : #include <iostr ...
- unity文件写入与读取
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; us ...
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
装饰者模式的学习(c#) 案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.C ...
- Java 通过 BufferReader 实现 文件 写入读取 示例
package com.javatest.techzero.gui; import java.io.BufferedReader; import java.io.File; import java.i ...
随机推荐
- BZOJ 3368 约翰看山(扫描)O(N)
这题,简直丧心病狂了. 大意是给你一个环上一些覆盖的区间,让你求总覆盖长度. 非常坑的点是这个区间因为是个环,所以可能逆时针给你,也可能顺时针给你,你特别要注意.那么区分顺时针和逆时针的方法 就是,题 ...
- Remove Duplicate Letters
316. Remove Duplicate Letters Total Accepted: 2367 Total Submissions: 12388 Difficulty: Medium Given ...
- wamp出现问题#1045 - Access denied for user 'root'@'localhost' (using password: NO)的解决方法
打开wamp->apps->phpmyadmin目录下面的config.inc.php文件 cfg['Servers'][$i]['verbose'] = 'localhost';$cfg ...
- python之函数的使用
备注:本篇文章主要讲一讲函数及集合的一些常用用法: 一.首先先看下,集合(set): 集合的特点:无序.不重复(这点跟字典有点像) <1>,在需要访问集合的时候,由于集合本身是无序的,所以 ...
- leetcode 237 Delete Node in a Linked List python
题目: Write a function to delete a node (except the tail) in a singly linked list, given only access t ...
- QT5删除隐藏目录+隐藏文件
1.功能需求 删除一个目录(包括目录本身),同时删除该目录中所有文件及目录(含隐藏的) 2.遇到的问题 qt5中已经有了递归删除目录的函数--->bool QDir::removeRecursi ...
- 利用Azure backup备份和恢复Azure虚拟机(1)
中国区Azure最近发布了关于使用Azure Backup来备份VM服务,于3月1日正式上线,该功能对于需要对关键工作负载进行备份的用户来讲,极大的降低了操作复杂度.以前我们所使用Powershell ...
- Nginx 配置指令的执行顺序(五)
Nginx 的 content 阶段是所有请求处理阶段中最为重要的一个,因为运行在这个阶段的配置指令一般都肩负着生成“内容”(content)并输出 HTTP 响应的使命.正因为其重要性,这个阶段的配 ...
- MySQL_数据分页查询(limit用法)
取前5条数据 select * from table_name limit 0,5 或 select * from table_name limit 5 取第11条到第15条数据,共5条 select ...
- cp | mv | rm
linux下文件的复制.移动与删除命令为:cp,mv,rm 一.文件复制命令cp 命令格式: cp [-adfilprsu] 源文件(source) 目标文件(destination) cp [opt ...