第10章 输入输出(过程式)

合集下载

第9章 输入输出(过程式)

第9章 输入输出(过程式)
FILE *fp=fopen("d:\\data\\file1.txt","w"); if (fp == NULL) { printf("文件打开失败\n");
exit(-1); }
往文件中写入数据
• 输出一个字符,输出成功时返回输出的字符
int fputc(int c, FILE *stream );
文件内部指针定位:
int fseek(FILE *stream,long offset,int origin); • origin指出参考位置,它可以是
SEEK_CUR(当前位置), SEEK_END(文件末尾) SEEK_SET(文件头);
• offset为相对origin移动的字节数(偏移量),它 可以为正值(向后移动)或负值(向前移动)。
第十章 输入/输出 --过程式实现
控制台输出
把ch中的字符输出到标准输出设备,函数返回输出的 字符
• int putchar(int ch);
把p所指向的字符串输出到标准输出设备,操作成功 时函数返回一个非负整数
• int puts(const char *p);
提供对基本类型数据的输出操作,操作成功时返回输 出的字符个数
以文本方式打开的文件,在Windows环境中输入时, 会把'\r'和'\n'两个字符转换成'\n'一个字符。
对文件打开操作的成功与否进行判断
FILE *fp=fopen("d:\\data\\file1.txt","r"); if (fp == NULL) { printf("文件打开失败\n");

《C++程序设计》电子教案第10章 流类库与输入输出

《C++程序设计》电子教案第10章  流类库与输入输出

C++中所有流都是相同的 , 但文件可以不同 。 中所有流都是相同的, 但文件可以不同。 中所有流都是相同的 使用流以后, 使用流以后 , 程序用流统一对各种计算机设备 和文件进行操作,使程序与设备、 和文件进行操作 , 使程序与设备 、 程序与文件 无关,从而提高了程序设计的通用性和灵活性。 无关 , 从而提高了程序设计的通用性和灵活性 。 也就是说, 也就是说 , 无论与流相联系的实际物理设备差 别有多大,流都采用相同的方式运行。 别有多大 , 流都采用相同的方式运行 。 这种机 制使得流可以跨越物理设备平台, 制使得流可以跨越物理设备平台 , 实现流的透 明运作,而与实际的物理设备无关。例如, 明运作 , 而与实际的物理设备无关 。 例如 , 往 显示器上输出字符和向磁盘文件或打印机输出 字符,尽管接受输出的物理设备不同, 字符 , 尽管接受输出的物理设备不同 , 但具体 操作过程是相同的。 操作过程是相同的。
返回本节
10.2 格式化 格式化I/O
10.2.1 10.2.2 10.2.3 10.2.4 ios类中的枚举常量 类中的枚举常量 使用ios成员函数 使用 成员函数 使用I/O操作符 使用 操作符 检测流操作的错误
返回首页
10.2.1 ios类中的枚举常量 类中的枚举常量
在根基类ios中定义有三个用户需要使用的枚举类型, 在根基类 中定义有三个用户需要使用的枚举类型,由 中定义有三个用户需要使用的枚举类型 于它们是在公用成员部分定义的, 于它们是在公用成员部分定义的,所以其中的每个枚举类 型常量在加上ios::前缀后都可以为本类成员函数和所有外 型常量在加上 前缀后都可以为本类成员函数和所有外 部函数访问。 部函数访问。 在三个枚举类型中有一个无名枚举类型, 在三个枚举类型中有一个无名枚举类型,其中定义的每个 枚举常量都是用于设置控制输入输出格式的标志使用的。 枚举常量都是用于设置控制输入输出格式的标志使用的。 该枚举类型定义如下: 该枚举类型定义如下: enum { skipws,left,right,internal,dec,oct,hex,sh owbase,showpoint, uppercase,showpos,scientific,fixed,unitbuf, stdio };

C语言入门经典(第四版)10-基本输入和输出操作

C语言入门经典(第四版)10-基本输入和输出操作

C入门经典(第4版) 入门经典( 10.4.2 转义序列
在printf()和wprintf()函数的格式控制字符串中可以包含空白字符.空白字 printf()和wprintf()函数的格式控制字符串中可以包含空白字符.空白字 符有换行符,回车符,换页符,空格和制表符.它们用以\ 符有换行符,回车符,换页符,空格和制表符.它们用以\开头的转义序列表 示.
C入门经典(第4版) 入门经典( 10.3.2 输入格式控制字符串
在scanf()或wscanf()函数中使用的格式控制字符串不完全类似于printf()中 scanf()或wscanf()函数中使用的格式控制字符串不完全类似于printf()中 的格式控制字符串.在格式控制字符串中添加一个或多个空白字符,如空格' ', 的格式控制字符串.在格式控制字符串中添加一个或多个空白字符,如空格' ', 制表符' t'或换行符'n',scanf()会忽略空白字符,直接读入输入中的下一个非空 制表符'\t'或换行符'n',scanf()会忽略空白字符,直接读入输入中的下一个非空 白字符.在格式控制字符串中只要出现一个空白字符,就会造成无数个连续的 空白字符被忽略.因此,可以在格式字符串内加入任意多个的空白字符,使输 入易于理解.注意,scanf()默认忽略空白字符,但使用%c,%[]或%n指定符 入易于理解.注意,scanf()默认忽略空白字符,但使用%c,%[]或%n指定符 读取数据时除外 .
C入门经典(要使用scanf()函数从键盘输入数据,使用printf()函数将数据输 前面章节主要使用scanf()函数从键盘输入数据,使用printf()函数将数据输 出到屏幕上.事实上,使用这些函数指定从哪里输入或输出到哪里去的方式没 有什么特别.因为scanf()函数可以从任何地方接收信息,只要这些信息是字符 有什么特别.因为scanf()函数可以从任何地方接收信息,只要这些信息是字符 流即可.同样,printf()函数也可以将数据输出到任何能接收字符流的地方去. 流即可.同样,printf()函数也可以将数据输出到任何能接收字符流的地方去. 这并不是巧合:C 这并不是巧合:C语言的标准输入输出函数都是独立于设备的,程序员不需要 考虑如何在特定设备上传入传出数据.C 考虑如何在特定设备上传入传出数据.C语言的库函数和操作系统会确保在特 定设备上的操作完全正常.

二级C语言历年真题汇总__第10章对文件的输入输出-李赛红

二级C语言历年真题汇总__第10章对文件的输入输出-李赛红

二级C语言历年真题汇总__第10章对文件的输入输出-李赛红第10章对文件的输入输出(20xx年x月真题)(40)有以下程序#include <stdio.h>main(){ FILE *fp;int i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++) fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++) fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++) printf("%d,",a[i]);}程序运行后的输出结果是A)4,5,6,1,2,3, B)1,2,3,3,2,1,C)1,2,3,4,5,6, D)6,5,4,3,2,1,答案:D(20xx年x月真题)40、以下函数不能用于向文件写入数据的是A ftellB fwriteC fputcD fprintf答案:A(20xx年x月真题)40.有以下程序#include<stdio.h>main(){FILE *fp; int k,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp); fp=fopen("d2.dat","r");for(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp); printf("%d,%d\n",k,n); }程序运行后的输出结果是A.1,2B.3,4C.5,6D.123,456答案:C(20xx年x月真题)(40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是A)写操作结束后可以从头开始读 B)只能写不能读C)可以在原有内容后追加写 D)可以随意读和写(20xx年x月真题)(40)有以下程序#include#include<stdio.h>main(){ FILE *fp;char str[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fopen("myfile.data","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str); puts(str);fclose(fp); }程序运行后的输出结果是A) abc B) 28c C) abc28 D)因类型不一致而出错答案:B(20xx年x月真题)(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件答案:C(20xx年x月真题)40.有以下程序#include <stdio.h>main(){ FILE *f;f=fopen("filea.txt","w"); fprintf(f,"abc"); fclose(f); }若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt的内容为A)helloabc B)abclo C)abc D)abchello答案:C(20xx年x月真题)(40)有以下程序#include <stdio.h>main(){ FILE *pf;char *s1="China", *s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf); /*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是A) China B) Chinang C) ChinaBeijing D) BeijingChina答案:B(20xx年x月真题)30、下列叙述中错误的是( )。

大一上学期第10章 程序设计基础

大一上学期第10章  程序设计基础

2
程序设计的基本步骤: 程序设计的基本步骤: (1)分析问题,确定数学模型或方法。 分析问题, 分析问题 确定数学模型或方法。 (2)设计算法,画出流程图。 设计算法, 设计算法 画出流程图。 (3)选择编程工具,按算法编写程序。 选择编程工具, 选择编程工具 按算法编写程序。 (4)调试程序,分析输出结果。 调试程序, 调试程序 分析输出结果。
10
10.2.5 算法示例
1.迭代算法 . 迭代是一种建立在循环基础上的算法。在数学中, 迭代是一种建立在循环基础上的算法。在数学中, 迭代经常被用来进行数值计算,例如求方程的解, 迭代经常被用来进行数值计算,例如求方程的解, 不断用变量原来的值递推求新的值的过程。 不断用变量原来的值递推求新的值的过程。 讨论求若干个数之和或乘积的问题。 讨论求若干个数之和或乘积的问题。
15
(2)折半查找 )
作为折半查找的表必须是顺序存储的有序表, 作为折半查找的表必须是顺序存储的有序表,即表采 用顺序结构存储,表中的元素按关键字值递增(或递减) 用顺序结构存储,表中的元素按关键字值递增(或递减) 排列。 排列。 假设表中的关键字值递增排列, 假设表中的关键字值递增排列,则折半查找的实现方 法是:首先取整个有序表的中间元素A 法是:首先取整个有序表的中间元素 m的关键字同给定 比较, 值x比较,若相等,则查找成功;否则,若Am的关键字小 比较 若相等,则查找成功;否则, 于x,则说明待查元素只可能落在表的后半部分中,接着 ,则说明待查元素只可能落在表的后半部分中, 只要在表的后半部分子表中查找即可; 只要在表的后半部分子表中查找即可;若 Am的关键字大 于x,则说明待查元素只可能落在表的前半部分中,接着 ,则说明待查元素只可能落在表的前半部分中, 只要在表的前半部分子表中查找即可。这样, 只要在表的前半部分子表中查找即可。这样,经过一次关 键字的比较,就缩小一半的查找空间,重复进行下去, 键字的比较,就缩小一半的查找空间,重复进行下去,直 到找到关键字为x的元素 或者表中没有待查元素( 的元素, 到找到关键字为 的元素,或者表中没有待查元素(此时 查找区间为空)为止。 查找区间为空)为止。

C语言全国计算机二级等级考试教程第10章 字符串(章节带习题)

C语言全国计算机二级等级考试教程第10章  字符串(章节带习题)

输出时直到遇第一 char str[ ]=“I love you!” , *p=str; 个‘\0‟结束输出。 字符指针变量 printf(“%s\n” , p); 字符数组名
输入项 字符指针变量
转去介绍
10.3 字符串的输入和输出
字符数组名
输入项
字符指针变量 当字符数组名作为输入项: char str[15]; scanf(“%s”,str); 在内存中的形式是: P R 输入形式为: PROGRAMMING<CR> O G R A M M I N Ga赋初值后的存储示意图
10.4 字符串数组
可以定义字符型指针数组并通过赋初值来构成一个类似的字符串数组。 例如:char *pa[3]={“a”, ”bb”, ”ccc”}; 定义了一个字符型指针数组,该数组中含有3个元素pa[0] 、pa[1]、 pa[2],且每一个 元素都是一个指向字符串的指针。
则在str中存入的只是字符串“APROGRAM”,而不是字符串“APROGRAM MING
10.3 字符串的输入和输出
10.3.3 调用gets、puts函数在终端输入或输出一行字符串
调用gets函数来输入字符串,例如: char str[15]; gets( str ); 在内存中的形式是: A P 若从键盘上依次输入: APROGRAM MING<CR> R O G R A M M I N G \0 \0
★ 两个字符串分别占有不同的存储空间。 ★ 指针变量pmark中的地址可以改变而指向另外一个长度 不同的字符串。
10.3 字符串的输入和输出
10.3.1 输入和输出字符串时的必要条件
输入和输出的格式说明符为 %s 对字符串输入输出时的必要条件: 字符串常量 输出项 字符数组名 printf(“%s\n” , ”I love you!”); char str[ ]=“I love you!”; printf(“%s\n” , str); I love you!

计算机基础知识什么是输入输出(IO)操作

计算机基础知识什么是输入输出(IO)操作

计算机基础知识什么是输入输出(IO)操作计算机基础知识:什么是输入输出(IO)操作计算机是一种用于处理数据的工具,而输入输出(IO)操作是计算机与外部世界进行数据交流的方式。

通过输入,我们可以将外部的数据传递给计算机进行处理,而输出则是将计算机处理后的数据传递给外部环境。

在本文中,我们将探讨输入输出操作的基础知识。

一、输入输出(IO)的概念输入输出是计算机与外部环境进行数据交流的方式。

输入是指将外部数据传递给计算机,供计算机进行处理和分析;输出则是将计算机处理后的数据传递给外部环境,供人们观察和使用。

在计算机系统中,输入输出设备起到了极为重要的作用。

例如,键盘、鼠标和触摸屏等输入设备用于接收用户的命令和数据,显示器、打印机等输出设备则用于向用户展示计算机处理的结果。

二、输入输出的分类1. 人机交互输入输出:这种输入输出方式主要是通过外部设备与人进行交互。

例如,使用键盘输入文字、鼠标点击图标进行操作、触摸屏选择菜单等。

同时,显示器将结果输出给人们观察。

2. 设备驱动程序输入输出:这种输入输出方式是通过设备驱动程序进行的。

计算机通过设备驱动程序与各类外部设备进行通信。

例如,打印机通过打印机驱动程序与计算机通信,将计算机处理的文档输出。

3. 文件输入输出:文件是计算机中存储数据的一种形式,也是计算机与外部世界交流的一种方式。

我们可以将数据存储在文件中,进行读取和写入操作。

三、输入输出的基本操作在计算机基础中,我们了解到输入输出操作的基本函数包括读取和写入。

读取是指从外部获取数据并传递给计算机进行处理;写入则是将计算机处理的结果传递给外部。

读取函数的基本形式如下:input(data):从外部读取数据,存储在变量data中。

写入函数的基本形式如下:output(data):将变量data中的数据写入外部设备,供外部环境使用。

四、输入输出的应用输入输出操作在计算机中得到了广泛的应用。

以下是一些常见的输入输出操作应用场景:1. 数据采集:许多科学实验、气象观测等需要收集大量外部数据,通过输入输出操作,这些数据可以传递给计算机进行进一步的分析和处理。

第10章-输出、输入与用户界面设计-new

第10章-输出、输入与用户界面设计-new
应当遵循自然的步骤顺序例如如果适当的话名字安排在姓的前面反馈应对每一个用户行动提供发馈例如确定一个记录已经被添加而不是简单地在屏幕中给出另一个空表关闭对话应当被合理成组有一个开始中间和结束例如显示屏序列的最后应当指出已经没有更多的显示屏错误处理应检测所有错误以及应当给出如何继续的报告和建议例如建议为何发生此类错误以及用户如何操作来纠正错误



14
便于填写。原始单据的设计要保证填写得迅速、正确、全面、简易和节约 。具体地说应做到:填写量小,版面排列简明、易懂。 数据排列一般是从上到下、从左到右。 便于归档。单据大小要标准化、预留装订位置,标明传票的流动路径。 单据的格式应能保证输入精度。 为了容易填写,尽量使用选择式,或者表格式。 类型相同的数据尽量排在一起,如数字项目排在一起,文字项目排在一起 。 不往计算机输入的数据经改集中排在原始凭证最上端或者最下端。

信息系统的输出用于向系统用户呈现信息,用户所需要的各种管理业务 和经营决策等方面的信息都是由系统的输出部分完成的。同时,输出是 信息系统中最可见的部分,用户往往通过输出来了解系统的面貌,因此 ,输出通常是作为管理层和用户最终评估系统价值的基础。 信息系统输出设计的目的是使系统能够正确及时地输出用户需要的各种 有用信息,保证系统输出的信息能够方便地为用户所使用,能够为用户 的管理活动提供有效的信息服务。信息能否满足用户需要,直接关系到 系统的使用效果和系统的成功与否。 系统输出分为中间输出和最终输出两类。中间输出是指子系统对主系统 或另一个子系统之间的数据传送,而最终输出则是指通过终端设备(如 显示器屏幕、打印机等)向管理者输出的一类信息。
15
上海财经大学信息管理与工程学院
第10章 输出、输入与用户界面设计

大学课程《微型计算机接口技术及其应用》课件PPT 第10章 并行接口

大学课程《微型计算机接口技术及其应用》课件PPT 第10章 并行接口
例10.3
乙机:查询接收
receive: mov dx,302h in al,dx ;查询PC4(OBF*)=0? and al,10h jnz receive mov dx,300h ;接收数据 in al,dx mov ah,al
例10.3
乙机:接收响应
mov dx,303h mov al,00h ;使PC0(ACK*)=0
置位允许中断,复位禁止中断
对INTE的操作通过写入端口C的对应位实 现,INTE触发器对应端口C的位是作应答 联络信号的输入信号的哪一位,只要对那 一位置位/复位就可以控制INTE触发器
选通输入方式下
端口A的INTEA对应PC4 端口B的INTEB对应PC2
方式1输出引脚:A端口
PA7~PA0 INTEA PC6
C端口上半部:输出,C口下半部:输入
B端口:方式0输出
方式控制字:10110001B或B1H
初始化的程序段:
mov dx,0fffeh ;假设控制端口为FFFEH
mov al,0b1h
;方式控制字
out dx,al
;送到控制端口
2. 读写数据端口
初始化编程后:
当数据端口作为输入接口时,执行输入IN指 令将从输入设备得到外设数据
表示A口已经接收数据
PC0
INTRB
中断允许触发器
中断请求信号 请求CPU接收数据
方式1输入联络信号
STB*——选通信号,低电平有效
由外设提供的输入信号,当其有效时,将输入设备送 来的数据锁存至8255A的输入锁存器
IBF——输入缓冲器满信号,高电平有效
8255A输出的联络信号。当其有效时,表示数据已 锁存在输入锁存器
输出缓冲器满信号 表示CPU已经输出了数据

C语言第10章对文件的输入输出 ppt课件

C语言第10章对文件的输入输出  ppt课件
程序中的输入输出都是通过操作系统进行 的 ➢“流”是一个传输通道,数据可以从运行 环境流入程序中,或从程序流至运行环境
PPT课件
11
10.1.1 什么是文件
➢从C程序的观点来看,无论程序一次读写 一个字符,或一行文字,或一个指定的数 据区,作为输入输出的各种文件或设备都 是统一以逻辑数据流的方式出现的。C语 言把文件看作是一个字符(或字节)的序 列。一个输入输出流就是一个字符流或字 节(内容为二进制数据)流。
PPT课件
20
10.1.3 文件的分类
ASCII形式
00110001 00110000 00110000 00110000 00110000
(1) (0) (0) (0) (0)
二进制形式
00000000 00000000 00100111 00010000
(10000)
PPT课件
21
10.1.4 文件缓冲区
的temp子目录下面
PPT课件
15
10.1.2 文件名
➢文件路径表示文文件件在名外部存储设备中的位 置。如:
D: \CC\temp\file1.dat 表示file1.dat文件存放在D盘中的CC目录下
的temp子目录下面
PPT课件
16
10.1.2 文件名
➢文件路径表示文命 识件名 符在规 的外则 命部遵 名存循 规储标 则设备中的位 置。如:
➢“文件”指存储在外部介质上数据的集合
一批数据是以文件的形式存放在外部介质上的 操作系统是以文件为单位对数据进行管理 想找存放在外部介质上的数据,先按文件名找
到所指定的文件,然后再从该文件读数据 要向外部介质上存储数据也必须先建立一个文
件(以文件名作为标志),才能向它输出数据

C语言开发基础教程(Dev-C++) 第10章 文件操作

C语言开发基础教程(Dev-C++) 第10章 文件操作


10.3.2 单行读写文件
2、fputs()函数
FILE *fp;
fp = fopen("D:\\test.txt","r+"); //以读写模式打开文件
fputs("China",fp);

10.1.2 文件
总体来说,二进制文件较小,生成的速度 快,加载的速度也快,但文件内容往往需 要解析才可读。文本文件相对较大,生成 与加载的速度比二进制文件要慢,但文本 文件无需任何转换就可以看到其内容。

10.1.3 文件指针
在C语言中,所有的文件操作都必须依靠指针来完成,因此如果要对文件 进行操作,必须先定义指向文件的指针,然后通过文件指针完成对文件 的操作。 文件指针的定义格式如下: FILE *变量名; FILE *fp; //定义文件指针fp

10.2 文件的打开和关闭
文件正常打开时,函数返回指 向该文件的文件指针;文件打 开失败时,函数返回NULL。一 般在调用该函数之后,为了保 证程序的健壮性,会进行一次 判空操作。
FILE* fp;
//定义文件指针
fp=fopen(“D:\\test.txt”,“r”);
if(fp==NULL) //判空操作
程序
内存 输出文件缓冲区
输出
输出
输入 输入文件缓冲区 输入
磁盘

10.2 文件的打开和关闭
文件最基本的操作就是打开和 关闭,在对文件进行读写之前, 需要先打开文件;读写结束之 后,则要及时关闭文件。

10.2 文件的打开和关闭
1、打开文件 fopen()函数用于打开一个文件。 FILE* fopen(char* filename,char* mode); 返回值类型FILE*表示该函数返回值为文件指针类型;参数filename用于 指定文件的绝对路径,即用来确定文件包含路径名、文件名主干和扩展名 的唯一标识;参数mode用于指定文件的打开模式,函数的返回值为一个 文件类型的指针,如果文件打开失败,则返回空指针。

第十章 IO接口、IO指令与IO实现方式

第十章  IO接口、IO指令与IO实现方式
从原理上看,查询式传送比无条件传送 可靠,因此使用场合也较多。但在查 询方式下,CPU不断地读取状态字和 检测状态字,如果状态字表明外设未 准备好,则CPU必须等待。这些过程 占用了CPU的大量工作时间,而CPU 真正用于传输数据的时间却很少。
使用中断传送方式时,CPU就不必花费大 量时间去查询外设的工作状态了,因为当外 设就绪时,会主动向CPU发中断请求信号。 而CPU本身具有这样的功能:在每条指令被 执行完以后,会检查外部是否有中断请求, 如果有中断请求,那么在中断允许标志为1 的情况下,CPU保留下一条指令的地址和当 前的标志,转到中断服务程序去执行。被外 界中断时,程序中下一条指令所在处称为断 点。从中断服务程序返回时,CPU会恢复标 志和断点地址。
;AH中的字节输出到DX+1所指的端口中
使用输入/输出指令时,要注意以下两点:
⑴.只能用累加器作为执行输入/输出过程的机构,不能用其他 寄存器代替。
例如: IN BX,50H 错误
OUT DX,CX 错误
⑵.用直接输入/输出指令时,寻址范围为0—255,即直接输 入/输出指令中允许使用的最大端口号是FFH。当系统中的 端口号大于FFH时,对这些端口就不能用直接寻址的方式来 访问了,而必须用间接寻址方式。用间接输入/输出指令前, 要在DX寄存器中设置好端口号,并且要注意,只能用DX寄 存器,而不能用别的寄存器。
;内容输出到80H,AH中的内容输出到81H。
下面是间接输入/输出指令的例子,在指令中端口号是由(DX)给 出的。 IN AL,DX ;从DX所指的端口中读取一个字节 IN AX,DX ;从DX和DX+1所指出的两个端口中读取一个字, OUT DX,AL ;将AL中的字节输出到DX所指的端口中 OUT DX,AX ;将AL中的字节输出到DX所指的端口中,同时 将

实验四:输入输出实验

实验四:输入输出实验

课程名称:计算机组成原理实验项目:输入输出实验姓名:李翠超专业:计算机科学与技术班级:计算机6班学号:1609040307计算机科学与技术学院实验教学中心2017年12 月13 日实验项目名称:输入输出实验一、实验目的1、掌握计算机的I/O端口原理,注意实践观察2、掌握程序编制及指令格式二、实验内容1、移位实验2、数据传送实验/输入输出实验三、实验原理及接线1、COP2000 中有7 个寄存器可以向数据总线输出数据, 但在某一特定时刻只能有一个寄存器输出数据. 由X2,X1,X0 决定那一个寄存器输出数据.图1 数据输出选择器原理图表1 连接线表置下表的控制信号, 检验输出结果2、移位实验ALU直接输出和零标志位产生原理图ALU左移输出原理图ALU右移输出原理图直通门将运算器的结果不移位送总线。

当X2X1X0=100时运算器结果通过直通门送到数据总线。

同时,直通门上还有判0电路,当运算器的结果为全0时,Z=1右移门将运算器的结果右移一位送总线。

当X2X1X0=101时运算器结果通过右通门送到数据总线。

具体连线是:Cy与CN-->DBUS7ALU7-->DBUS6ALU6-->DBUSSALUS-->DBUS4ALU4-->DBUS3ALU3-->DBUS2ALU2-->DBUS 1ALU1-->DBUSOCy与CN-->DBUS7当不带进位移位时(CN=0):0-->DBUS7当带进位移位时(CN=1):Cy-->DBUS7左移门将运算器的结果左移一位送总线。

当X2X1X0=110时运算器结果通过左通门送到数据总线。

具体连线是:ALU6-->DBUS7ALUS-->DBUS6ALU4-->DBUSSALU3-->DBUS4ALU2-->DBUS3ALU1-->DBUS2ALUO-->DBUS 1当不带进位移位时(CN=0):0-->DBUSO当带进位移位时(CN=1):Cy-->DBUSO3、在综合实验中,模型机作为一个整体来工作的,所有微程序的控制信号由微程序存储器uM输出,而不是由开关输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
exit(-1); }
往文件中写入数据
• 输出一个字符,输出成功时返回输出的字符
int fputc(int c, FILE *stream );
• 输出一个字符串,输出成功时返回一个非负整数
int fputs(const char *string, FILE *stream );
• 输出基本类型数据,返回输出的字符数
关闭文件
• fclose(FILE *stream );
文件输入
打开文件
• FILE *fp=fopen( const char *filename, const char *mode );
• filename是要打开的外部文件名; • mode是打开方式,它可以是:
"r",表示打开一个外部文件用于读操作,这时, 外部文件必须存在,否则打开文件失败。
“a”:打开一个外部文件用于添加(从文件末尾)操作。 如果外部文件不存在,则先创建该外部文件。
在打开方式w或a的后面还可以加上b,指出以二进制 方式打开文件。默认打开方式为文本方式。
对文件打开操作的成功与否进行判断:
FILE *fp=fopen("d:\\data\\file1.txt","w"); if (fp == NULL) { cerr << "文件打开失败\n";
在C++中,输入/输出不是语言定义的成分, 而是由具体的实现(编译程序)作为标准 库的功能来提供。
C++的I/O流
在C++中,输入/输出操作是一种基于字节流的 操作:
• 在进行输入操作时,可把输入的数据看成逐个字节 地从外设流入到计算机内部(内存);
• 在进行输出操作时,则把输出的数据看成逐个字节 地从内存流出到外设。
int fprintf(FILE *stream, const char *format [, argument ]...);
• 按字节输出数据。参数size为字节块的尺寸;count为字 节块的个数。返回实际输出的字节块的个数
size_t fwrite(const void *buffer,size_t size,size_t count,FILE *stream);
在r的后面还可以加上b,指出是以二进制方式打 开文件,默认打开方式为文本方式。
对文件打开操作的成功与否进行判断
FILE *fp=fopen("d:\\data\\file1.txt","r"); if (fp == NULL) { cerr << "文件打开失败\n";
exit(-1); }
从文件中读出数据
控制台输入
从键盘输入一个字符作为返回值
• int getchar();
从键盘输入一个字符串放入p所指向的内存空间, 成功时返回p,否则,返回NULL
• char *gets(char *p);
对基本类型的数据进行输入,返回实际输入并保存 的数据个数
• int scanf(const char *format [,<参数表>]);
在进行控制台输入/输出时,程序中需要有下面的包 含命令:
#include <cstdio> //或 stdio.h
int i=1; double j=2; printf("i=%d, j=%f\n",i,j); 结果为: i=1, j=123.400000
输出格式控制
参见教材<表10-1>
在对文件数据进行读写的过程:
• 打开文件。目的是:在程序内部的一个表示文件的变 量/对象与外部的一个具体文件之间建立联系。
• 文件读/写 • 关闭文件。目的是把暂存在内存缓冲区中的内容写入
到文件中,并归还打开文件时申请的内存资源。
每个打开的文件都有一个内部的位置指针, 它指出文件的当前读写位置。
进行读/写操作时,每读入/写出一个字节, 文件位置指针会自动往后移动一个字节的 位置。
位置指针
文件数据的存储方式
文本方式(text)
• 只包含可显示字符和有限的几个控制字符(如:‘\r’、 ‘\n’、‘\t’等);
• 一般用于存储具有“行”结构的文本数据; • 文本方式存储整数1234567 :
文件输出
打开文件
• FILE *fopen(const char *filename, const char *mode);
• filename是要打开的外部文件名; • mode表示打开方式,它可以是:
"w":打开一个外部文件用于写操作,如果外部文件已 存在,则首先把它的内容清除;否则,先创建该外部文 件。
个数
• int fscanf( FILE *stream, const char *format [, argument ]...);
• //按字节输入数据。参数size为字节块的尺寸;count 为字节块的个数。返回值表示读入的字节块的个数
• size_t fread(const void *buffer, size_t size,size_t count,FILE *stream);
• long ftell( FILE *stream ); //返回位置指针的位 置
面向字符串变量的I/O
程序中的有些数据并不直接输出到标准输 出设备或文件,而是需要保存在程序中的 某个字符串变量中;有些数据有时也不直 接从标准输入设备或文件中获得,而是需 要从程序中的某个字符串变量中获得。
• int sprintf(char *buffer,const char *format [,argument] ... );
用于永久性保存数据的设备称为外部存储器 (简称:外存),如:磁盘、磁带、光盘等。
在外存中保存数据的方式通常有两种:文件和 数据库。本课程只介绍以文件方式来永久性地 保存数据。
文件的基本概念
在C++中,把文件看成是由一系列字节所构成的 字节串,称为流式文件,对文件中数据的操作 (输入/输出)通常是逐个字节顺序进行。
第十章 输入/输出 --过程式实现
本章内容
输入/输出(I/O)概述 面向控制台I/O 面向文件I/O 面向字符串变量I/O
输入/输出(I/O)概述
输入/输出(简称I/O)是程序的一个重要 组成部分:
• 程序运行所需要的数据往往要从外设(如:键 盘、文件等)得到
• 程序的运行结果通常也要输出到外设(如:显 示器、打符的编码
• int fgetc(FILE *stream ); • //输入一个字符串,函数正常结束时返回string的值,
否则返回NULL
• char *fgets(char *string,int n, FILE *stream ); • //输入基本类型的数据,返回值表示读入并存储的数据
注意:从文件输入必须要知道文件中数据 的存储格式!
判断文件是否结束
• int feof(FILE *stream); • 该函数返回0表示文件未结束;返回非0表示文
件结束。
关闭文件
• fclose(FILE *stream);
文件输入/输出
打开一个既能读入数据、也能输出数据的文件
• FILE *fopen( const char *filename, const char *mode );
• mode可以是: • "r+":打开一个外部文件用于读/写操作。文件必须存
在。 • "w+":打开一个外部文件用于读/写操作。如果文件
不存在,则首先创建一个空文件,否则,首先清空已 有文件中的内容。 • "a+":打开一个外部文件用于读/添加操作。如果文件 不存在,则首先创建一个空文件。以这种方式打开的 文件,输出操作总是在文件尾进行。
文件内部指针定位
• int fseek(FILE *stream,long offset,int origin); //显式地指定位置指针的位置
• origin指出参考位置,它可以是
SEEK_CUR(当前位置), SEEK_END(文件末尾) SEEK_SET(文件头);
• offset为移动的字节数(偏移量),它可以为正值 (向后移动)或负值(向前移动)。
在C++的标准库中,除了提供基于字节的输入 /输出操作外,为了方便使用,还提供了基于 C++基本数据类型数据的输入/输出操作。
I/O的分类
面向控制台的I/O:
• 从标准输入设备(如:键盘)获得数据 • 把程序结果从标准输出设备(如:显示器)输出
面向文件的I/O:
• 从外存文件获得数据 • 把程序结果保存到外存文件中
依次把1、2、3、4、5、6、7的ASCII码(共7个字节)写入文 件。
二进制方式(binary)
• 可以包含任意的二进制字节; • 一般用于存储无显式结构的数据; • 二进制方式存储整数1234567 :
把整数1234567的计算机内部表示(假设为32位计算机): 0012D687(十六进制,4个字节:00 12 D6 87)写入文件。
• int putchar(int ch); 把p所指向的字符串输出到标准输出设备,操作成功
时函数返回一个非负整数
• int puts(const char *p); 提供对基本类型数据的输出操作,操作成功时返回输
出的字符个数 • int printf(const char *format [,<参数表>]);
int i; double j; scanf("i=%d,j=%lf",&i,&j); 输入可以为: i=10,j=123.4
相关文档
最新文档