鱼C论坛

 找回密码
 立即注册
查看: 2325|回复: 1

C语言文件读取之后什么也没有

[复制链接]
发表于 2019-12-19 08:59:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student{
    char name[15];
    char major[15];
    int Eng_sco;
    int cal_sco;
    int c_sco;
    int sum;
};
int tx_per=0,tx_ave,tx_sum=0;
int wl_per=0,wl_ave,wl_sum=0;
int wlw_per=0,wlw_ave,wlw_sum=0;
int ReadStudentInfo(const char* filename, struct student** pStudents);
void Count(struct student pStudents[], int num);
int main()
{

    int count;
    int m;
    struct student *list;
    count=ReadStudentInfo("readme.txt", &list);
    printf("学生信息: \n");
    printf("----------------------------------------------------\n");
    printf("序号  姓 名  专业名称 英语成绩 线性代数成绩 c语言成绩 总成绩\n");
    for(m=1;m<=count;m++)
    {
        printf("%4d %s %s %4d %4d %4d %4d\n",m,(list+m-1)->name,(list+m-1)->major,(list+m-1)->Eng_sco,(list+m-1)->cal_sco,(list+m-1)->c_sco,(list+m-1)->sum);
    }
    Count(list, count);
    printf("\n统计信息 :\n");
    printf("----------------------------------------------------\n");
    printf("序号  专业名称 学生人数 平均成绩\n");
    printf("   1    通信      %d       %d\n",tx_per,tx_ave);
    printf("   2    网络      %d       %d\n",wl_per,wl_ave);
    printf("   3   物联网     %d       %d\n",wlw_per,wlw_ave);

    return 0;
}
int ReadStudentInfo(const char* filename, struct student** pStudents)
{
    FILE *fp;
    char ch;
    int i=1,j;
    fp=fopen("data.txt","r");
    if(fp==NULL)
    {
        printf("cann't open the file");
        exit(-1);
    }
    ch=fgetc(fp);
   while(ch!=EOF)
    {
        if(ch=='\n')
        {
            i++;
        }
        ch=fgetc(fp);
    }
    rewind(fp);
     *pStudents=(struct student*)malloc(sizeof(** pStudents)*i);
    for(j=0;j<i;j++)
    {
        fread(&*pStudents[j],sizeof(struct student)-sizeof(int),1,fp);
        (*pStudents+j)->sum=((*pStudents+j)->Eng_sco+(*pStudents+j)->cal_sco+(*pStudents+j)->c_sco);
    }
    fclose(fp);
    return i;
}
void Count(struct student pStudents[], int num)
{
    int n=1;
    for(n=1;n<=num;n++)
    {
        if(!strcmp((pStudents+n-1)->major,"通信"))
        {
            tx_per++;
            tx_sum=tx_sum+(pStudents+n-1)->sum;
        }
        if(!strcmp((pStudents+n-1)->major,"网络"))
        {
            wl_per++;
            wl_sum=wl_sum+(pStudents+n-1)->sum;
        }
        if(!strcmp((pStudents+n-1)->major,"物联网"))
        {
            wlw_per++;
            wlw_sum=wlw_sum+(pStudents+n-1)->sum;
        }
        tx_ave=tx_sum/tx_per;
        wl_ave=wl_sum/wl_per;
        wlw_ave=wlw_sum/wlw_per;
    }
    free(pStudents);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-19 10:36:30 | 显示全部楼层
int ReadStudentInfo(const char* filename, struct student** pStudents)
{
    FILE *fp;
    char ch;
    int i=1,j;
    fp=fopen(filename,"r");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-5 00:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表