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

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

时间:2024-12-27 11:54:53浏览次数:5  
标签:fp 文件 return int 写入 2024 2025 FILE 20241329

作业信息

作业归属课程:2024-2025-1-计算机基础与程序设计
作业要求:2024-2025-1计算机基础与程序设计第十四周作业
作业目标:《C语言程序设计》第13-14章
作业正文:2024-2025-1 20241329 《计算机基础与程序设计》第十四周学习总结

教材学习内容总结

《C语言程序设计》第13章

  1. 二进制文件和文本文件
  • 概念

    • 文本文件:文本文件是一种字符流文件,它的内容是由字符组成的。在文本文件中,每个字符以ASCII码或其他字符编码的形式存储。例如,数字字符'1'在文本文件中存储的是其ASCII码值(十进制为49)。文本文件便于人类阅读和编辑,通常可以用文本编辑器直接打开查看内容。
    • 二进制文件:二进制文件是按照数据在内存中的存储形式原样存储的文件。它可以存储各种类型的数据,如整数、浮点数、结构体等,以二进制形式存储的数据更加紧凑,占用空间可能更小,但对于人类来说通常是不可读的,需要特定的程序来解析其内容。
  • 存储方式对比

    • 对于整数1234,在文本文件中,它会被存储为字符'1'、'2'、'3'、'4'对应的ASCII码值,占用4个字节(假设ASCII编码);而在二进制文件中,如果是32位整数,它会按照整数的二进制表示存储,占用4个字节,存储的是二进制数据00000100 11010010 00000011 00000001(假设采用小端序存储)。
  1. 文件的打开和关闭
  • 文件打开函数fopen

    • 语法FILE *fp; fp = fopen("文件名","文件打开方式");。如,FILE *fp; fp = fopen("test.txt","r");以只读方式打开名为test.txt的文件。
    • 文件打开方式
      • r(只读):用于打开文本文件进行读取操作。如果文件不存在,打开操作会失败。
      • w(只写):用于打开文本文件进行写入操作。如果文件不存在,则创建一个新文件;如果文件存在,则清空文件内容。
      • a(追加):用于打开文本文件进行追加写入操作。如果文件不存在,则创建一个新文件;如果文件存在,则在文件末尾添加内容。
      • rbwbab:分别用于二进制文件的只读、只写、追加操作。
      • r +w +a +:用于读写操作,r +打开文件用于读写,文件必须存在;w +创建新文件用于读写或清空现有文件用于读写;a +打开文件用于读写,在文件末尾追加写入。对应的二进制文件读写方式为rb +wb +ab +
    • 该函数返回一个指向FILE结构的指针,打开文件失败则返回NULL
  • 文件关闭函数fclose

    • 语法fclose(fp);,其中fp是文件指针。例如,如果已经打开了一个文件指针fp,使用fclose(fp);来关闭文件。关闭文件非常重要,它可以释放文件资源,避免数据丢失等问题。如果不关闭文件,可能会导致缓冲区数据未写入文件,并且会占用系统资源。
  1. 按字符读写文件
  • 字符读取函数fgetc
    • 语法int c; c = fgetc(fp);,其中fp是文件指针。它从指定的文件中读取一个字符,并返回读取到的字符的ASCII码值。如果遇到文件末尾,返回EOFEOF是一个在<stdio.h>中定义的常量,通常值为 - 1)。如,可以用以下代码读取一个文本文件的内容并输出到控制台:
#include <stdio.h>
int main()
{
    FILE *fp;
    int c;
    fp = fopen("test.txt","r");
    if(fp == NULL)
    {
        perror("打开文件失败");
        return 1;
    }
    while((c = fgetc(fp))!= EOF)
    {
        putchar(c);
    }
    fclose(fp);
    return 0;
}
  • 字符写入函数fputc
    • 语法fputc(int c, FILE *fp);,其中c是要写入的字符(以ASCII码值形式),fp是文件指针。如,以下代码将字符串Hello写入一个文本文件:
#include <stdio.h>
int main()
{
    FILE *fp;
    fp = fopen("test.txt","w");
    if(fp == NULL)
    {
        perror("打开文件失败");
        return 1;
    }
    fputc('H',fp);
    fputc('e',fp);
    fputc('l',fp);
    fputc('l',fp);
    fputc('o',fp);
    fclose(fp);
    return 0;
}
  1. 按格式读写文件
  • 格式化读取函数fscanf
    • 语法fscanf(fp,"格式控制字符串",变量地址列表);,其中fp是文件指针。它从文件中按照指定的格式读取数据并存储到对应的变量中。如,文件data.txt中存储了两个整数10 20,可以用以下代码读取:
#include <stdio.h>
int main()
{
    FILE *fp;
    int num1, num2;
    fp = fopen("data.txt","r");
    if(fp == NULL)
    {
        perror("打开文件失败");
        return 1;
    }
    fscanf(fp,"%d %d",&num1,&num2);
    printf("读取的两个数为:%d %d\n",num1,num2);
    fclose(fp);
    return 0;
}
  • 格式化写入函数fprintf
    • 语法fprintf(fp,"格式控制字符串",变量列表);,其中fp是文件指针。它将按照指定的格式把变量的值写入文件。如,将两个整数写入文件:
#include <stdio.h>
int main()
{
    FILE *fp;
    int num1 = 30, num2 = 40;
    fp = fopen("newdata.txt","w");
    if(fp == NULL)
    {
        perror("打开文件失败");
        return 1;
    }
    fprintf(fp,"%d %d",num1,num2);
    fclose(fp);
    return 0;
}
  1. 按数据块读写文件
  • 数据块读取函数fread
    • 语法size_t fread(void *ptr, size_t size, size_t count, FILE *fp);。其中ptr是指向存储读取数据的内存缓冲区的指针;size是每个数据块的大小(单位为字节);count是要读取的数据块数量;fp是文件指针。如,读取一个结构体数组的数据到内存中:
#include <stdio.h>
struct Student
{
    char name[20];
    int age;
};
int main()
{
    FILE *fp;
    struct Student students[3];
    fp = fopen("students.bin","rb");
    if(fp == NULL)
    {
        perror("打开文件失败");
        return 1;
    }
    fread(students, sizeof(struct Student),3,fp);
    fclose(fp);
    // 可以在这里对读取的学生数据进行处理
    return 0;
}
  • 数据块写入函数fwrite
    • 语法size_t fwrite(void *ptr, size_t size, size_t count, FILE *fp);。其中ptr是指向要写入文件的数据的内存缓冲区的指针;size是每个数据块的大小(单位为字节);count是要写入的数据块数量;fp是文件指针。如,将一个结构体数组的数据写入二进制文件:
#include <stdio.h>
struct Student
{
    char name[20];
    int age;
};
int main()
{
    FILE *fp;
    struct Student students[3] = {{"张三",20},{"李四",21},{"王五",22}};
    fp = fopen("students.bin","wb");
    if(fp == NULL)
    {
        perror("打开文件失败");
        return 1;
    }
    fwrite(students, sizeof(struct Student),3,fp);
    fclose(fp);
    return 0;
}

《C语言程序设计》第14章

  1. 动画的基本原理
  • 动画是通过快速连续显示多帧图像,利用人眼的视觉暂留现象,产生动态效果的技术。
  • 在C语言中,动画的实现通常依赖于定时器来控制帧率,以及使用图形库来绘制和更新图像。
  1. 迷宫游戏
  • 迷宫游戏的设计包括迷宫的生成、玩家的移动逻辑和游戏界面的实现。
  • 迷宫可以通过二维数组来设计,数组中的每个元素代表迷宫的一个单元格,可以是墙壁、路径、起点或终点。
  • 玩家的移动需要处理用户输入,并更新玩家在迷宫中的位置,同时检查是否碰到墙壁。
  • 游戏的逻辑还包括检查玩家是否到达出口,以及游戏的开始和结束条件。
  1. Flappy bird游戏
  • Flappy bird是一个简单的2D游戏,玩家通过点击来控制小鸟跳跃,以避开障碍物。
  • 游戏的核心机制包括小鸟的重力模拟、跳跃逻辑和障碍物的生成与移动。
  • 游戏的实现需要图形库来绘制游戏元素,以及处理用户输入(如点击事件)。
  • 游戏难度可以通过调整障碍物的间距、高度和移动速度来实现。

基于AI的学习

image

参考资料

标签:fp,文件,return,int,写入,2024,2025,FILE,20241329
From: https://www.cnblogs.com/incamellia/p/18635160

相关文章

  • gesp(二级)(15)洛谷:B4036:[GESP202409 二级] 数位之和
    gesp(二级)(15)洛谷:B4036:[GESP202409二级]数位之和题目描述小杨有nnn个正整数,他认为一个正整数是美丽数字当且仅当该正整数每一位数字的总和是......
  • gesp(二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵
    gesp(二级)(16)洛谷:B4037:[GESP202409二级]小杨的N字矩阵题目描述小杨想要构造一个m×mm\timesmm×m......
  • 10款较为常见的公司电脑监控软件 | 2025年良心推荐
    在现代企业管理中,电脑监控软件已经成为了一项不可或缺的工具,特别是对于远程办公的企业。它不仅可以帮助管理层监控员工的工作状态,还能确保公司的数据安全和防止泄密。2025年,市场上有许多功能强大的监控软件,以下是十款广受好评且适合企业使用的电脑监控软件推荐。1.金纬软件......
  • 20241227-ftp-下载文件
    海南(ftp远程主机下载文件)#!/bin/bash#配置文件路径CONFIG_FILE="/data3/ftp_config.conf"#需要修改的sectionidSECTION_ID="server2"#接口名称LOAD_NAME="846_Schedule"#下载文件名称,使用通配符fileName="${LOAD_NAME}_{MTCS_DATA_DAY}.txt"#本地目录SRC......
  • 2024-2025-1 20241316 《计算机基础与程序设计》第十四周学习总结
    2024-2025-120241316《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第十四周作业这个作业的目标《C语言程序设计》第13-14章并完成云班课测试作......
  • CVE-2024-11477:7-Zip 中的严重缺陷可让黑客控制
    7-Zip是一款完全免费而且开源的压缩软件,相比其他软件有更高的压缩比而且相对于WinRAR不会消耗大量资源。7-Zip文件压缩工具中发现了一个漏洞,攻击者可以通过特制的存档远程执行恶意代码。为了解决这个问题,开发人员发布了一个更新,但必须手动安装,因为该程序不支持自动更......
  • Oracle WebLogic Server反序列化漏洞(CVE-2024-21216)
    免责声明请勿使用本文中提到的技术进行非法测试或行为。使用本文中提供的信息或工具所造成的任何后果和损失由使用者自行承担,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。一、简介WebLogic是一款由BEA系统公司开发的JavaEE应用服务器,现由Oracle......
  • NLP论文速读(AAAI 2024)|面向序列生成的基于高效采样强化学习 (Efficient Sampling-ba
    论文速读|ESRL:EfficientSampling-basedReinforcementLearning forSequenceGeneration论文信息:简介:   本文探讨了将强化学习(ReinforcementLearning,RL)应用于序列生成模型的背景。序列生成是一个长期决策问题,而RL特别适合优化长期奖励,例如序列级别的评分......
  • 盘点2024年9大热门项目管理工具,你都用过哪些?
    以下是2024年度备受好评的十大项目管理工具,它们各自具有独特的功能和优势,能够精准满足不同类型企业和项目的多样化需求:1.板栗看板简介:板栗看板是一款以“看板”方式直观展示项目及任务进度的可视化管理软件,旨在帮助团队简化项目管理流程,优化任务分配与协作。功能:它支持自定义看......
  • kali魔改系统更新,基于kali2024.4
    公众号:泷羽Sec-尘宇安全前言前几天,W啥都学大佬,更新了kali魔改系统:zss_kali,之前的是kali2024.1,现在变成了kali2024.4系统版本:kalilinux2024.4固件类型:BIOS用户:zss密码:ss下载地址:https://pan.quark.cn/s/f68bc0b6c3f0项目地址:https://github.com/Curio......