三九宝宝网宝宝教育教学论文

c语言标准输入流

02月09日 编辑 39baobao.com

[求助 C语言中函数memset memcpy和strchr的功能和用法]memset函数用来对一段内存空间全部设置为某个字符,常用于内存空间初始化。将已开辟内存空间 s 的首 n 个字节的值设为值 c 。 下面是一个例子 #include <stdio.h> #include <...+阅读

由于程序中经常有大量对文件的输入输出操作,它经常构成了程序的主要部分,因而C语言提供了很多输入输出的函数,它们分别用于两种类型文件输入输出系统:即由ANSI标准定义的缓冲文件(也称标准文件(流)输入输出(I/O)系统);另一类是ANSI标准中没有定义的非缓冲文件(也称非标准文件(流)输入输出(I/O)系统)。我们已经熟悉了通过键盘和显示器进行输入输出的一些函数,如scanf(),printf()等等,这些通过控制台(键盘、显示器等)进行I/O的操作,可以看作标准文件输入输出系统的一些特例,实际上在标准输入输出系统中的一些函数,有关文件的参数(文件结构指针或称流指针),只要用标准设备的流指针代替,这些标准输入输出函数即成为控制台I/O函数。在任何程序执行时,C系统都定义了5个标准设备文件可供使用。自动打开的5个标准设备文件的文件结构指针(在标准I/O系统中)和文件代号将有一个规定值: 设备 标准文件I/O系统中的流指针名 非标准文件…… 键盘(标准输入) stdin 0 显示器(标准输出) stdout 1 显示器(标准错误) stderr 2 串行口(标准辅助) stdoux 3 打印机(标准打印) stdprn 4 这样,不论在标准文件系统还是非标准文件系统中,文件结构只要用上述的流指针或文件代号代替,则这些函数也均适用于控制台设备。

一、文本流和二进制流 在C中引入了流(stream)的概念。它将数据的输入输出看作是数据的流入和流出,这样不管是磁盘文件或者是物理设备(打印机、显示器、键盘等),都可看作一种流的源和目的,视他们为同一种东西,而不管其具体的物理结构,即对他们的操作,就是数据的流入和流出。这种把数据的输入输出操作对象,抽象化为一种流,而不管它的具体结构的方法很有利于编程,而涉及流的输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。 在C中流可分为两大类,即文本流(text stream)和二进制流(binary stream)。所谓文本流是指在流中流动的数据是以字符形式出现。在文本流中,\'\\n\'被换成回车CR和换行LF的代码0DH和0AH。而当输出时,则0DH和0AH本换成\'\\n\'。 二进制流是指流动的是二进制数字序列,若流中有字符,则用一个字节的二进制ASCII码表示,若是数字,则用一个字节的二进制数表示。在流入流出时,对\\n符号不进行变换。例如2001这个数,在文本流中用其ASCII码表示为: \'2\' \'0\' \'0\' \'1\' | | | | 50 48 48 49 共占4字节。而在二进制流中则表示为:00000111 11010001 用十六进制就是07D1。只占两字节。 由此看出,二进制流比文本流节省空间,且不用进行对\\n的转换,这样可以大大加快流的速度,提高效率。因而,对于含有大量数字信息的数字流,可以采用二进制流的方式;对于含有大量字符信息的流,则采用文本流的方式。

二、流和文件 在C语言中流就是一种文件形式,它实际上就表示一个文件或设备(从广义上讲,设备也是一种文件)。把流当作文件总觉得不习惯,因而有人称这种和流等同的文件为流式文件,流的输入输出也称为文件的输入输出操作。当流到磁盘而成为文件时,意味着要启动磁盘写入操作,这样流入一个字符(文本流)或流入一个字节(二进制流)均要启动磁盘操作,将大大降低传输效率(磁盘是慢速设备),且降低磁盘的使用寿命。为此,C语言在输入输出的使用使用了缓冲技术,即在内存为输入的磁盘文件开辟了一个缓冲区(缺省为512字节),当流到该缓冲区装满后,再启动磁盘一次,将缓冲区内容装到磁盘文件中去。读取文件也是类似。 在C语言中将此种文件输入输出操作称为标准输入输出,或称流式输入输出(因这种输入输出操作是ANSI C推荐的标准)。还有一种是不带缓冲文件输入输出,称为非标准文件输入输出或低级输入输出,它将由DOS直接管理。关于这两种输入输出文件系统下节将会介绍。

三、文件FILE的数据结构 typedef struct { short level; unsigned flags; char fd; unsigned char hold; short bsize; unsigned char *buffer; unsigned char *curp; unsigned istemp; short token; }FILE; 这是Turbo C中使用的定义(在stdio.h文件中),不同的C编译器,可能使用不同的定义,但基本含义变化不会太大。 flags: 是一个10位的标志字,其具体含义如下: 位 代表符号 含义 0 _F_READ 读 1 _F_WRIT 写 2 _F_BUF 由fclose释放缓冲区 3 _F_LBUF 行缓冲 4 _F_ERR 出错标志 5 _F_EOF EOF文件尾标志 6 _F_BIN 二进制方式 7 _F_IN 在进行输入 8 _F_OUT 在进行输出 9 _F_TERM 文件是一个终端 其他各字段内容以及flags字段内各位所的功能,请参照其他一些资料。这里不多说了,它目前并不是我们要求的内容。 应该注意,不要把文件指针和FILE结构指针混为一谈,它们代表两个不同的地址。文件指针指出了对文件当前读写的数据位置,而FILE结构指针是指出了打开文件所对应的FILE结构在内存中的地址,这个指针它实际本身也包含了文件指针的信息。流指针中的各字段是供C语言内部使用的,用户不应该存取它的任何字段。

以下为关联文档:

自己用代码实现C语言库函数memcpy代码如下: void *memccpy(void *s1, const void *s2, int c, size_t n) { char *mys1 = (char *) s1; char *mys2 = (char *) s2; while (--n >= 0) if ((*mys1++ = *mys2++)...

去瑞士读研对语言有什么要求瑞士大学普遍对英语要求在雅思6或6.5分,部分可能会有小分要求,具体情况要看你申请的专业而定,就目前来讲,中国学生大多数都是去学酒管理专业的,这个专业的话基本上都在6分。到瑞...

如何用C语言计算圆的面积代码为: #include <stdio.h> #include <string.h> #define PI 3.14; int main(void) { double r,s; printf("输入圆的半径\n"); scanf("%f",&r); s = r * r * PI; printf("圆的面积为...

在C语言里怎么实现使用函数调用方式计算圆的面积#include <stdio.h> #define PI 3.14159 double len_circle(double r) { return 2*PI*r; } double area_circle(double r) { return PI*r*r; } main() { double r,len,s; pr...

编程从键盘输入圆的半径r计算并输出圆的周长和面积用C语言编写方法: #include <stdio.h> #define PI 3.14 int main() { float r,c,area; printf("请输入圆的半径:"); scanf("%f",&r); c=2 * PI * r; area=PI * r * r; printf("该圆的周长是%.2f,面...

c语言圆的面积思路分析C语言: 求任意圆的面积: /*C语言编一个程序求任意圆的面积*/ 代码如下: #include<stdio.h&gt; //引入头文件 #define PI 3.1415926f //定义PI的值 void main() //无返回值类型 {...

设计一个程序由用户输入半径计算出圆周长和圆面积好像用不着access2003吧 vb代码: Private Sub Command1_Click() Dim r As Single Dim c As Single Dim s As Single Dim P As Single P = 3.14 r = Int(Text1.Text) c = 2 *...

戏剧的语言有哪些特点戏剧人物语言的主要特点 1、高度个性化--- 个性化语言是指人物的语言符合并表现人物的身份、性格。即什么人说什么话;听其声则知其人。个性化语言,是刻画人物达到合理性、真实...

急急急反编译软件把EXE文件反译成什么?是机器语言首先你得清楚,微软的exe可执行文件(即PE文件,有PE规范定义)的特征,才能使用不同的反编译软件对exe进行反编译。 如今,exe一般分托管代码和非托管代码两类(托管代码是由C#等语言生成...

推荐阅读
图文推荐