首页 > 编程语言 >2023-2024-1 20231301 《计算机基础与程序设计》第十四周学习总结

2023-2024-1 20231301 《计算机基础与程序设计》第十四周学习总结

时间:2023-12-28 20:47:10浏览次数:28  
标签:fp 文件 char ch int 20231301 2024 FILE 2023

2023-2024-1 20231301 《计算机基础与程序设计》第十四周学习总结

作业信息

作业 链接
作业课程 <班级>(2023-2024-1-计算机基础与程序设计
作业要求 <作业>(2023-2024-1计算机基础与程序设计第十四周学习总结)
作业目标 <《C语言程序设计》预习第十三章> 《C语言程序设计》
作业正文 <博客>(第十四周学习总结

目录

学习内容总结

《C语言程序设计》第十三章

二进制文件和文本文件

文本文件:每一位数字作为一个字符以ASCII的形式存储的,每一个数字占用一个字节的存储空间。
二进制文件:把整个多位数字作为一个二进制数来存储。

文件的打开和关闭:
FILE *fopen(const char *filename,const char *mode);
第一个参数表示文件名,包含路径和文件名两个部分。
第二参数表示打开方式

“r”:只读方式打开文本文件
“w”:只写方式,创建并打开文本文件,已存在的文件将被覆盖
“a”:只写方式,打开文本文件,向文件尾部添加数据。
“+”:与上面的字符串组合,表示以读写的方式打开文本文件
“b”:与上面的字符串组合,表示打开二进制文件

FILE *fp;
fp=fopen(“D:\demo.txt”,“ab+”);
fclose(fp);

文件打开后记得关闭:int fclose(FILE *fp);关闭成功,返回0值;否则返回非0值。

读写文件

按字符读写文件:

//从fp文件中读取一个字符,并将指针指向下一个字符。读取成功,返回该字符;否则返回EOF。
int fgetc(FILE *fp);
int fputc(int c,FILE*fp);//将字符C写入fp文件中,写入错误,返回EOF;否则返回字符c。
//写入字符到文件中
#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    char ch;
    if((fp=fopen("demo.txt","w"))==NULL)//看是否打开成功
    {
        exit(0);
    }
    ch=getchar();
    while(ch!='\n')  //以回车符作为文件的结尾
    {
        fputc(ch,fp);
        ch=getchar();//输入字符到缓冲区,直到键入回车符才从缓冲区逐个读出并赋值给ch。
    }
    fclose(fp);
    //从文件中读出字符
    if((fp=fopen("demo.txt","rb"))==NULL)
    {
        exit(0);
    }
    /*
    ch=fgetc(fp);
    while(!feof(fp)) feof()来判断是否读到文件末尾,是返回非0值
    {
     putchar(ch);
     ch=fgetc(fp);
     if(isprint(ch))  判断是否为可打印字符
     {
      printf("%c\n",ch);
     }
    }
    */
    while((ch=fgetc(fp))!=EOF)
    {
        putchar(ch);
    }
    fclose(fp);
    return 0;
}
//读写文件中的字符串
char *fgets(char *s,int n,FILE *fp);
//从fp中读取n-1个字符,在字符串的末尾加上'\0',存入s。读取失败,返回空指针。
int fputs(const char *s,FILE *fp);
//fgets与gets不同,会将换行符也读入;fputs与puts不同,不会在写入文件的结尾加上换行符。
 
#include<stdio.h>
#include<stdlib.h>
#define N 80
int main()
{
    FILE *fp;
    char str[N];
    if((fp=fopen("demo.txt","a"))==NULL)
    {
        exit(0);
    }
    gets(str);
    fputs(str,fp);
    fclose(fp);

按格式读写文件

int fscanf(FILE *fp,const char *format,…);
第一个参数是文件指针,第二个参数为格式控制参数,第三个参数为地址参数表列,后两个参数与scanf()相同.从文件读数据。
int fprintf(FILE *fp,const char *format,…);

//向文件写入数据
#include<stdio.h>
#include<stdlib.h>
#define N 30
typedef struct date
{
    int year;
    int month;
    int day;
}DATE;
typedef struct student
{
    long studentID;
    char studentName[10];
    char studentSex;
    DATE birthday;
    int score[4];
    float aver;
}STUDENT;
void InputScore(STUDENT stu[],int n,int m)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        scanf("%ld",&stu[i].studentID);
        scanf("%s",stu[i].studentName);
        scanf("% c",&student[i].studentSex);//前面有一个空格
        scanf("%d",&stu[i].birthday.year);
        scanf("%d",&stu[i].birthday.month);
        scanf("%d",&stu[i].birthday.day);
        for(j=0;j<3;j++)
        {
            scanf("%d",&stu[i].score[j]);
        }
    }
}
void AverScore(STUDENT stu[],int n,int m)
{
    int i,j;
    float sum;
    for(i=0;i<n;i++)
    {
        sum=0;
        for(j=0;j<m;j++)
        {
            sum+=stu[i].score[j];
        }
        stu[i].aver=sum/m;
    }
}
 
void WritetoFile(STUDENT stu[],int n,int m)
{
    FILE *fp;
    int i,j;
    if((fp=fopen("score.txt","w"))==NULL)
    {
        exit(0);
    }
    for(i=0;i<n;i++)
    {
    fprintf(fp,"%ld%s%c%d%d%d",stu[i].studentID,stu[i].studentName,student[i].studentSex,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day);
        for(j=0;j<m;j++)
        {
            fprintf(fp,"%d",stu[i].score[j]);
        }
        fprintf(fp,"%lf",stu[i].aver);
    }
    fclose(fp);
}
void ReadfromFile(STUDENT stu[],int n,int m)
{
    FILE *fp;
    int i,j;
    if((fp=fopen("score.txt","r"))==NULL)
    {
        exit(0);
    }
    for(i=0;i<n;i++)
    {
        fscanf(fp,"%ld",&stu[i].studentID);
        fscanf(fp,"%s",stu[i].studentName);
        fscanf(fp,"% c",&student[i].studentSex);//前面有一个空格
        fscanf(fp,"%d",&stu[i].birthday.year);
        fscanf(fp,"%d",&stu[i].birthday.month);
        fscanf(fp,"%d",&stu[i].birthday.day);
        for(j=0;j<3;j++)
        {
            fscanf(fp,"%d",&stu[i].score[j]);
        }
    }
}
int main()
{
    STUDENT stu[N];
    int n;
    scanf("%d",&n);
    InputScore(stu,n,4);
    AverScore(stu,n,4);
    WritetoFile(stu,n,4);
    ReadfromFile(stu,n,4);
    return 0;
}

按数据块读写文件
unsigned int fread(void *buffer,unsigned int size,unsigned int count,FILE *fp);
//从fp中读取数据块到buffer指向的内存中,size是每个数据块的大小,count最多允许数据块读取的个数
unsigned int fwrite(const void *buffer,unsigned int size,unsigned int count,FILE *fp);
//将buffer指向内存中的数据块写入fp指向的文件中。函数的返回值也就是实际写入的数据块个数

void WritetoFile(STUDENT stu[],int n,int m)
{
    FILE *fp;
    int i,j;
    if((fp=fopen(“score.txt”,“w”))==NULL)
    {
        exit(0);
    }
    fwrite(stu,sizeof(STUDENT),n,fp);
    fclose(fp);
}

学习中的问题

  1. 实验八
  2. C语言总结(持续更新

标签:fp,文件,char,ch,int,20231301,2024,FILE,2023
From: https://www.cnblogs.com/twilight0966/p/17933511.html

相关文章

  • 软件开发者必读!2024年30大趋势提前曝光!
    软件是科技行业的基础。从智能手机到复杂的企业系统,软件是推动这些技术的核心。在探索数字时代的过程中,了解软件开发的趋势非常重要。人工智能、机器学习、物联网等技术的快速发展对软件开发行业产生了巨大影响。本文旨在通过30个数据汇总,帮助读者们初步了解2024年软件开发领域的新......
  • 2023-2024-1 20231329 《计算机基础与程序设计》第14周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里2022-2023-1计算机基础与程序设计第14周作业(https://www.cnblogs.com/rocedu/p/9577842.html)这个作业的目标《C语言程......
  • 2023-2024 20231313《计算机基础与程序设计》第十四周学习总结
    2023-202420231313《计算机基础与程序设计》第十四周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十四周学习总结作业内容《C语言程序设计》第13章并完成云班课测试作业正文我的作业目录教材总结总结学习过程中的问题《C语言程......
  • 重磅发布|博睿数据2023年度精选案例集—— IT运维之光
    当前,数字经济已经成为全球经济增长的重要引擎。随着新技术的飞速发展,企业数字化转型机遇不断涌现,而稳定、安全、可靠的IT运维环境是实现数字化转型的关键。在此背景下,AIOps智能运维正成为企业高效管控种类繁多数量庞大的物理设备、精准定位故障信息、实时防护网络攻击、快速迭代需......
  • 2024跨年微信背景图
    ......
  • 2024年PMI-ACP考试安排已出,备考攻略请收下
    PMI-ACP®是一种专业认证,旨在验证专业人士在敏捷项目管理方面的知识和技能。对于那些对提高项目管理能力和拓宽职业发展道路感兴趣的人来说,考取PMI-ACP®证书是一个有吸引力的选择。下面一起来了解2024年PMI-ACP®报考相关信息。 2024年PMI-ACP®考试时间:经PMI®和中国国际人才交......
  • 2023 退役记
    CSP第一轮8月份回到学校,开始新一轮的竞赛复习。每天过着刷题、看知识点的生活。9月份开始做初赛题,感觉良好。9.16中午坐车去考点,车上午觉,不知道睡着没有。考场里一堆小学生。几年前我也是他们之中的一员……出来,对了下答案,估计在75~80。稳。膜拜满分大佬。晚上发现有......
  • 2024年3月PMP考试时间已定!尽快完成英文报名!
    2024年3月PMI®考试暂定在3月10日(周日)举办,报名预计在1月10日前后开始。请合理安排学习备考时间,尽早完成英文网站注册。最终报名日期以基金会官网发布的通知为准。 小贴士:计划参加2024年3月考试的考生,如尚未获得PMI®英文有效期,尽快登录PMI®官网进行申请,以免耽误考试报名。需要满......
  • OI练习记录 - 27/12/2023
    早安......
  • 2024年1月传统行业产品经理认证NPDP在这学靠谱
    NPDP产品经理国际资格认证是国际公认的唯一的新产品开发专业认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。我们针对互联网时代的个人、互联网企业、与传统企业推出一系列学习。课程从商业实战角度出发,梳理出在互联网......