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 ...
随机推荐
- 分享一个手机端好用的jquery ajax分页类
分享一个手机端好用的jquery ajax分页类 jquery-ias.min.js 1,引入jquery-ias.min.js 2,调用ajax分页 <script type="te ...
- struts2开发经验小结(method="{1}"等)
这里的{1}表示接收前面action里通过通配符传来的值,例如你配置的是<action name="*Crud" class="example.Crud" ...
- js 控制不能输入空格
onkeydown="if(event.keyCode==32) return false"
- Android识别图片中脸部信息
在Android开发中,大部分应用都是以用户为第一位,用户都有自己的个人中心,用来展示自己的信息,头像无疑是展示自己最直观的方式,随着各种政策的出台,实名认证,真人头像变得尤为重要,如果要求上传真人头 ...
- C# Winform程序本地化应用
1. 创建一个WinForm应用程序 – “WindowsFormsLocalizationTest”. 2. 在主窗体属性栏里,把Localizable属性设置成”True”. 3. 添加两个But ...
- 在Windows XP下手动安装Apache+MySQL+PHP环境 要点
在整个wamp环境搭建中,本质的工作如下: 1,配置系统对php中dll文件能默认处于调用状态.在windos下,对dll文件系统默认处于调用状态的,有两种采用的方式.第一种是:把需要调用dll文件复 ...
- Python之路第十天,高级(2)-多线程,多进程,协程
线程 threading threading模块对象 描述 Thread 表示一个线程的执行对象 Lock 锁原语对象 RLock 可重入锁对象,使单线程可再次获得已经获得了的锁(递归锁定) Cond ...
- Asp.net MVC4 下二级联动
效果图:
- Linux操作系统安全(一)
谈到Linux,大伙最先想到的是这是一个由全世界的优秀的黑客共同开发的一个开源操作系统,目前在服务器领域有着非常广的使用,同时,基于Linux操作系统而开发的Android系统也已经占据了移 ...
- 复习完毕STM32开发板
经过半个晚上的折腾,终于复习了STM32开发板,并使用ST官方库调试完毕一个printf重定向到串口的程序,3.5的库同以前的库不大一样,不过最终搞好了可以睡觉了,还可以睡7个小时. ...