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 ...
随机推荐
- delphi按钮控件的default属性
delphi按钮控件的default属性用于设置默认命令按钮,.设置为true时,按[Enter键]相当于用鼠标单击了该按钮 .窗口中如果有多个按钮的default是true的话,就根据tabinde ...
- (原+转)C++中的const修饰符
const int a; int const a; 这两个写法是等同的,表示a是一个int常量. 简记:const后面是什么就限定什么(因为C++标准规定,const关键字放在类型或变量名之前等价的) ...
- Java转换
1.如何将字符串String转化为整数int int i = Integer.parseInt(str); int i = Integer.valueOf(my_str).intValue(); ...
- synchronized 方式实现监控器中数据成员的同步
要对监控器中的数据成员进行访问,在考虑到多线程的情况下必须使用同步代码块来改变监控器中数据成员的值: synchronized (mAdapterLocking) { if (pEvery == 0) ...
- ng-click得到当前元素,angular.element()用法
<!DOCTYPE html> <html> <head> <title></title> <script src="lib ...
- 用户登录之cookie信息安全一二事
大家都知道用户登陆后,用户信息一般会选择保存在cookie里面,因为cookie是保存客户端, 并且cookie可以在客户端用浏览器自由更改,这样将会造成用户cookie存在伪造的危险,从而可能使伪造 ...
- let区别(关于racket和r5rs)
R5RS is the Revised5 Report on the Algorithmic Language Scheme.参考http://www.schemers.org/Documents/S ...
- C++利用指针突破私有成员访问限制
C++ 面向对象的一大特性就是封装,使用不同的访问控制符来控制外接对其的访问权限.比如: 1 class A 2 { 3 public: 4 A(): i(10){} 5 void print(){ ...
- tls和ssl
一个存在于 SSL 3.0 协议中的新漏洞于被披露,通过此漏洞,第三方可以拦截通过采用 SSL 3.0 的服务器传输的重要信息. 问题出在哪里? 与此问题相关的不是 SSL 证书本身,而是进行加密处理 ...
- How ASP.NET MVC Works?
原文地址:http://www.cnblogs.com/artech/archive/2012/04/10/how-mvc-works.html?ADUIN=7783008&ADSESSION ...