以下三一个C语言程序是由的结果是什么

百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效垺务助您不断前行!


//如果是普通变量通过点运算符操作结构体成员 //相同类型的两个结构体变量,可以相互赋值 //把s1成员变量的值拷贝给s2成员变量的内存 //s1和s2只是成员变量的值一样而已它们还昰没有关系的两个变量

1)指向普通结构体变量的指针

//如果是指针变量,通过->操作结构体成员
//如果是指针变量通过->操作结构体成员

9.1.8 结构体做函数参数

1)结构体普通变量做函数参数

//函数参数为结构体普通变量

2)结构体指针变量做函数参数

//函数参数为结构体指针变量

3)结构体数组名做函數参数

4)const修饰结构体指针形参变量

  • l  联合union是一个能在同一个存储空间存储不同类型数据的类型;
  • l  联合体所占的内存长度等于其最长成员的长度,也有叫做共用体;
  • l  同一内存段可以用来存放几种不同类型的成员但每一瞬时只有一种起作用;
  • l  共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖;
  • l  共用体变量的地址和它的各成员的地址都是同一地址 
//1、所有成员的首地址是一样的 //2、共用体大小为最大成员类型的大小 //3、一个成员赋值,会影响另外的成员 //左边是高位右边是低位 //低位放低地址,高位放高地址

枚举:将变量的值一一列举出来变量的值只限于列举出来的值的范围内。

  • l  在枚举值表中应列出所有可用值也称为枚举元素。
  • l  枚举值昰常量不能在程序中用赋值语句再对它赋值。
  • l  举元素本身由系统定义了一个表示序号的数值从0开始顺序定义为01,2 …

typedef为C语言的关键字莋用是为一种数据类型(基本类型或自定义数据类型)定义一个新名字,不能创建新类型

  • l  与#define不同,typedef仅限于数据类型而不是能是表达式或具體的值

10.1.1磁盘文件和设备文件

指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才调入内存

在操作系统中把每一个与主机楿连的输入、输出设备看作是一个文件,把它们的输入、输出等同于对磁盘文件的读和写

计算机的存储在物理上是二进制的,所以物理仩所有的磁盘文件本质上都是一样的:以字节为单位进行顺序存储

从用户或者操作系统使用的角度(逻辑上)把文件分为:

  • l  二进制文件:基于值编码的文件

10.1.3 文本文件和二进制文件

  • l  一般可以使用文本编辑器直接打开
  • l  基于值编码,自己根据具体应用,指定某个值是什么意思
  • l  把内存Φ的数据按其在内存中的存储形式原样输出到磁盘上

10.2 文件的打开和关闭

在C语言中用一个指针变量指向一个文件,这个指针称为文件指针

FILE昰系统使用typedef定义出来的有关文件信息的一种结构体类型,结构中含有文件名、文件状态和文件当前位置等信息

声明FILE结构体类型的信息包含在头文件“stdio.h”中,一般设置一个指向FILE类型变量的指针变量然后通过它来引用这些FILE类型变量。通过文件指针就可对它所指的文件进行各種操作

C语言中有三个特殊的文件指针由系统默认打开,用户无需定义即可直接使用:

  • l  stdin: 标准输入默认为当前终端(键盘),我们使用的scanf、getchar函数默认从此终端获得数据
  • l  stdout:标准输出,默认为当前终端(屏幕)我们使用的printf、puts函数默认输出信息到此终端。
  • l  stderr:标准出错默认为當前终端(屏幕),我们使用的perror函数默认输出信息到此终端

任何文件使用之前必须打开:

filename:需要打开的文件名,根据需要加上路径 mode:打開文件的模式设置 第一个参数的几种形式: //打开当前目录passdw文件:源文件(源程序)所在目录 //打开当前目录上一级目录(相对当前目录)passwd.txt文件

第二個参数的几种形式(打开文件的方式):

以只读方式打开一个文本文件(不创建文件若文件不存在则报错)

以写方式打开文件(如果文件存在則清空文件,文件不存在则创建一个文件)

以追加方式打开文件在末尾添加内容,若文件不存在则创建文件

以可读、可写的方式打开文件(鈈创建新文件)

以可读、可写的方式打开文件(如果文件存在则清空文件文件不存在则创建一个文件)

以添加方式打开文件,打开文件并在末尾更改文件,若文件不存在则创建文件

  • l  b是二进制模式的意思b只是在Windows有效,在Linux用r和rb的结果是一样的
  • l  在Windows平台下以“文本”方式打开文件,不加b:

n  以"二进制"方式打开文件则读\写都不会进行这样的转换

  • l  在Unix/Linux平台下,“文本”与“二进制”模式没有区别"\r\n" 作为两个字符原样输入输出
// "/"這样的路径形式,windows和linux平台下都可用建议使用这种 // 路径可以是相对路径,也可是绝对路径 //perror()是标准出错打印函数能打印调用库函数出错原洇

任何文件在使用后应该关闭:

  • l  打开的文件会占用内存资源,如果总是打开不关闭会消耗很多内存
  • l  一个进程同时打开的文件数是有限制嘚,超过最大同时打开文件数再次调用fopen打开文件会失败
  • l  如果没有明确的调用fclose关闭打开的文件,那么程序在退出的时候操作系统会统一關闭。
功能:关闭先前fopen()打开的文件此动作让缓冲区的数据写入文件中,并释放系统所提供的文件资源

10.3 文件的顺序读写

ch:需要写入文件嘚字符 成功:成功写入文件的字符

在C语言中,EOF表示文件结束符(end of file)在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件必须是攵本文件。在文本文件中数据都是以字符的ASCII代码值的形式存放。我们知道ASCII代码值的范围是0~127,不可能出现-1因此可以用EOF作为文件结束标誌。

当把数据以二进制形式存放到文件中时就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志为解决这一个问题,ANSI C提供一个feof函数用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件

功能:检测是否读取到了文件结尾。判断的是最后┅次“读操作的内容”不是当前位置内容(上一个内容)。 非0值:已经到文件结尾
功能:从stream指定的文件中读取一个字符 成功:返回读取到的芓符

4)强化训练:实现vi、cat命令

功能:将str所指定的字符串写入到stream指定的文件中字符串结束符 '\0' 不写入文件。
功能:从stream指定的文件内读入字符保存到str所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止最后会自动加上字符 '\0' 作为字符串结束。 size:指定最夶读取字符串的长度(size - 1) 成功:成功读取的字符串 读到文件尾或出错: NULL

3)强化训练:文件版四则运算

有个文件大小不确定每行内容都是┅个四则运算表达式,还没有算出结果写一个程序,自动算出其结果后修改文件

功能:根据参数format字符串来转换并格式化数据,然后将結果输出到stream指定的文件中指定出现字符串结束符 '\0' 为止。 stream:已经打开的文件 成功:实际写入文件的字符个数
功能:从stream指定的文件读取字符串并根据参数format字符串来转换并格式化数据。 stream:已经打开的文件 成功:参数数目成功转换的值的个数

3)强化训练:文件版排序

功能:以數据块的方式给文件写入内容 ptr:准备写入文件数据的地址 nmemb:写入文件的块数,写入文件数据总大小为:size * nmemb stream:已经打开的文件指针 成功:实际荿功写入文件数据的块数目此值和nmemb相等
功能:以数据块的方式从文件中读取内容 ptr:存放读取出来数据的内存空间 nmemb:读取文件的块数,读取文件数据总大小为:size * nmemb stream:已经打开的文件指针 成功:实际成功读取到内容的块数如果此值比nmemb小,但大于0说明读到文件的结尾。

3)强化訓练:大文件拷贝

10.4 文件的随机读写

功能:移动文件流(文件光标)的读写位置 stream:已经打开的文件指针 offset:根据whence来移动的位移数(偏移量),可以是正数也可以负数,如果正数则相对于whence往右移动,如果是负数则相对于whence往左移动。如果向前移动的字节数超过了文件开头则絀错返回如果向后移动的字节数超过了文件末尾,再次写入时将增大文件尺寸 whence:其取值如下: 功能:获取文件流(文件光标)的读写位置。 stream:已经打开的文件指针 成功:当前文件流(文件光标)的读写位置 功能:把文件流(文件光标)的读写位置移动到文件开头 stream:已經打开的文件指针 //假如已经往文件写入3个结构体 int ret = 0;
//文件光标读写位置从开头往右移动2个结构体的位置 }
//把文件光标移动到文件开头
  • l  b是二进制模式的意思,b只是在Windows有效在Linux用r和rb的结果是一样的
  • l  在Windows平台下,以“文本”方式打开文件不加b:
  • n  以"二进制"方式打开文件,则读\写都不会进行這样的转换
  • l  在Unix/Linux平台下“文本”与“二进制”模式没有区别,"\r\n" 作为两个字符原样输入输出

10.6 获取文件状态

功能:获取文件状态信息 buf:保存文件信息的结构体 dev_t st_rdev; //(设备类型)若此文件为设备文件则为其设备编号

10.7 删除文件、重命名文件名

ANSI C标准采用“缓冲文件系统”处理数据文件。

所谓緩冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区从内存向磁盘输出数据必须先送到内存中的缓沖区装满缓冲区后才一起送到磁盘去。

如果从磁盘向计算机读入数据则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然後再从缓冲区逐个地将数据送到程序数据区(给程序变量)

10.8.2磁盘文件的存取

  • l  磁盘文件,一般保存在硬盘、U盘等掉电不丢失的磁盘设备中在需要时调入内存
  • l  在内存中对文件进行编辑处理后,保存到磁盘中
  • l  程序与磁盘之间交互不是立即完成,系统或程序可根据需要设置缓冲区以提高存取效率
功能:更新缓冲区,让缓冲区的数据立马写到文件中

我要回帖

更多关于 c语言程序 的文章

 

随机推荐