问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言读文本,文本是关于学生成绩的结构体,然后读入另一个文件并且按照总分输出

发布网友 发布时间:2022-04-23 08:54

我来回答

3个回答

热心网友 时间:2023-10-08 23:14

要理解一个程序的执行过程,首先要理解什么是编译器。我们用C语言写的程序,计算机只能识别机器语言(二进制指令),计算机并不能理解。因此,必须 将C语言转换为机器语言。编译器就是用来实现这一功能的。编译器将源代码文件按照一定的对应规则映射程计算机能够识别的二进制指令。

关于源文件、目标文件和可执行文件
源文件:保存源代码的文件(*.c, *.cpp)
目标文件:编译器根据源文件创建的机器语言指令成为目标代码,包含目标代码的磁盘文件即目标文件。
一般为(*.obj)文件,Linux下为(*.o)文件。

编译完源代码后生成的目标文件并不能直接执行。一般我们编写的程序都会引用基本的库函数,因此在运行程序之前还要把库函用定义好的目标代码替换,这个过程称为链接。就是把自己写的源代码的目标文件与库函数的目标文件组合起来,生成最终的可执行文件。链接由链接器完成。

一般程序的执行过程:

程序先由程序员编辑创建并保存在硬盘上,源程序在机器上表现为01组成的位序列,8个位一个字节,每个字节表示一个文本字符,它是以ascii码的形式表示的。只由ascii字符组成的文件叫做文本文件,所有其他的叫做二进制文件。

为了让机器能够识别并运行程序,每条语句必须被转为低级机器语言指令,然后将指令按照可执行目标程序的格式打包,并以二进制磁盘文件的形式存放起来。以c程序为例,转换过程大致分为预处理,编译,汇编,链接四个步骤。下面进行详细解释。

预处理器根据以字符#开头的命令修改原始的c程序,比如#include<stdio.h>告诉预处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本中,将#define的变量替换等等,结果得到了另一个c程序,通常以.i作为文件扩展名。

编译器将文本文件hello.i翻译成hello.s,它包含了一个汇编语言程序。汇编语言程序中的每条语句都以一种标准的文本格式确切的描述一条低级机器语言指令。

汇编器将汇编程序翻译为机器语言指令,把这些指令打包成可重定位目标程序(relocateble object program)的格式,并把结果保存在hello.o中。hello.o文件是二进制文件,因为他的字节编码是机器语言指令而不是ascii码。如果用文本编辑器打开hello.o会看到一堆乱码。

链接阶段,比如hello中用到了printf函数,这是标准c库的函数,存在于一个名为printf.o的单独编译好的目标文件中,这个文件必须以某种方式合并到我们编译好的的目标文件中。链接器(ld)程序负责处理这种合并,结果得到hello文件,它是可执行目标文件,可以被加载到内存中,由系统执行。

转换完成之后就是执行了。在unix系统中,shell是一个命令行解释器,输出一个提示符,等待用户输入然后执行命令。如果输入的第一个单词不是一个内置的shell命令,shell将其解释为可执行文件,比如输入./hello,它将加载并运行这个文件。hello在屏幕上输出信息,然后终止。shell输出一个提示符,等待下一个输入的命令行。具体的过程为:初始时,shell执行它的指令,等待输入。用户输入字符创“./hello”后,shell将字符逐一读入寄存器,然后存放到存储器中,敲回车键后,shell知道用户结束命令输入。然后shell执行一系列的指令来加载可执行的hello文件,将hello目标文件的代码和数据从磁盘复制到主存,数据包含输出的字符串"HELLO,WORLD\n"。一旦目标文件hello中的代码和数据被加载到主存,处理器开始执行main的机器语言指令,将字符串从主存拷贝到寄存器,并输出到屏幕上。

由于涉及大量的主存,磁盘,寄存器通信,故产生了cache等缓冲提高速度的设备,减少通信阻塞。

为了减少用户的负担,操作系统对计算机硬件资源进行了抽象,产生了进程,线程,虚拟地址等概念。进程是程序的一次执行,是操作系统分配资源的单位,多个进程是可以并发执行的,并发执行实际上每个时刻执行的还是一个进程,只不过进程间切换的速度比较快,给人的感觉是并发执行。操作系统为每个进程保存执行的状态信息,称为上下文,包括pc和寄存器文件当前值,主存内容等等。切换进程时,发生上下文切换。一个进程中可以有多个线程执行单元,每个线程都运行在进程的上下文中,共享同样的代码和数据,由于网络服务器等应用对并行处理的需求越来越大,多线程模型也越来越重要。虚拟地址为每个进程提供了一个假象,即每个进程都在独占主存,每个进程看到的是一致的存储器,称为虚拟地址空间。虚拟地址空间是由大量的准确定义的区构成,linux从低地址到高地址依次为:程序代码和数据;堆;共享库;栈;内核虚拟存储器。

热心网友 时间:2023-10-08 23:15

可以用fread和fwrite函数来读写结构体

热心网友 时间:2023-10-08 23:15

好简单追问是吧,看书有点迷糊

题目是让我们读取指定文本中的n及n个学生的信息,然后将按总分从大到小排序的名次单写入另一个文本,要求用数组存储

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
开封跑滴滴需要什么手续 郑州的滴滴打车可以在开封好吗 集团管控有哪几种模式 集团管控五种模式 集团管控模式集团管控模式选择的主要影响因素 win10桌面图标间距变大了怎么调整 win10桌面图标间距变大了调整方法 南宁什么路有民生银行 南宁民生银行保安第一个月工资多少?? 如果电池在综合测试时,电压原本是3.7伏标准,但是一测试那个电压立马 保护板的线结对但是用检测板测试为什么检测灯不亮反插反而亮为什么? 由命令行输入一个成绩,使用switch结构求出成绩的等级.a:90~100;b:80~89;c: 用C语言程序编辑对于一次考试成绩进行统计,考M科,有N人(如10人)参加,并求平均值。 为什么闲鱼能发200个宝贝 c语言 基于命令行的简单数据库系统 求高手,帮忙C语言课设简单学生成绩统计软件,事后必定重谢!!!谢谢! 申请闲鱼玩家? 急求一个C++程序,请高手帮帮忙 开通闲鱼玩家需要10万粉丝,为什么有的几百粉丝也能过? 1.学生综合成绩统计工具 (用c语言编写) ·java学生成绩统计 成绩从命令行输入,数量不限 保存在数组中 按成绩降序排序 求平均成绩 打印输出 java题 学生成绩统计 成绩从命令行输入,数量不限 保存在数组中 按成绩降序排序 求平均成绩 打印输出 急求JAVA课设(学生成绩管理信息系统)高手请进!! 闲鱼玩家可信吗? 帮我用JAVA编程~学生成绩统计 要求1成绩从命令行输出,数量不限2保存到数组中3降序排列4求平均 用c++编写学生管理系统 闲鱼怎么提高流量,增加曝光率 做一个大一C语言如何设计学生成绩管理系统 闲鱼上发布怎样能超过50 怎样用Java设计学生成绩和学生学籍管理系统 怎样用C语言做学生成绩管理系统 闲鱼奢侈品玩家什么意思 十万火急!跪求一个学生成绩与奖学金评定系统的C++程序!邮箱:rainbowboyone@163.com.绝对加分! 粉丝只有400,请问如何开通闲鱼玩家? 哪位大侠帮我翻译下下面的文字,谢谢 甜脆柿子的功效与禁忌 脆柿子有什么功效? 市面上那种甜脆柿子有营养吗? 甜柿子优缺点对比?种植甜柿子有哪些注意事项 什么品种的柿子甜? 如何揽出又脆又甜的柿子 如何揽出又脆又甜的柿子 有鸡鸭鹅共24只,鸡是鹅的4倍,鸭是鹅的2倍,鸡鸭鹅各多少只? 有鸡鸭鹅一共59只,鸡的只数比鸭2倍少3只,鹅的只数是鸭的4倍多6只,鸡鸭鹅各有多少只? 鸡鸭鹅属于鸟类吗? 有鸡鸭鹅.鸡的只数占总数的百分之45,鸭和鹅只数的比是5比6,鸭比鸡少240只.鸡鸭鹅各有多少只 养殖场有鸡鸭鹅三种家禽共3200只 有鸡鸭鹅各一只,共九千克,鸡和鸭共重五千克。鸭和鹅共重七千克,鸡鸭鹅各重多 有鸡鸭鹅共90只,其中鸡比鸭多5只,鸭比鹅多5只,问鸡鸭鹅个多少只 鸡鸭鹅都有一对翅膀但为什么不会飞? 奶奶家养有鸡鸭鹅三种动物其中鸡和鸭一共有五只鸭和鹅一共有六只鸡和鹅一共有?