C++输入输出流

流类库与输入/输出
北京邮电大学
网络与交换技术国家重点实验室
宽带网研究中心
I/O流的概念
¾当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的流对象,另一个是文件对象
¾流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动
¾程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用
¾读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入
输出流
¾重要的输出流类型(C++标准库中预定义) ostream
ofstream
ostream
¾预先定义了如下的输出流对象:
cout标准输出
cerr标准错误输出,没有缓冲,发送给它的内容立即被输出。

clog 类似于cerr,但是有缓冲,缓冲区满时被输出。

插入运算符(<<)
¾插入(<<) 运算符对所有标准C++数据类型预先进行了操作符的重载
¾用于将数据转换成输出字节串的形式,传送到一个输出流对象
ofstream
¾ofstream类支持磁盘文件输出
¾如果在构造函数中指定一个文件名,当构造这个文件时该文件是自动打开的
ofstream myFile("filename",iosmode);
¾可以在调用默认构造函数之后使用open成员函数打开文件
ofstream myFile; //声明一个静态输出文件流对象myFile.open("filename",iosmode);
//打开文件,使流对象与文件建立联系
ofstream成员函数¾open函数
把流与一个特定的磁盘文件关联起来。

需要指定打开模式。

¾put函数
把一个字符写到输出流中。

¾write函数
把内存中的一块内容写到一个输出文件流中¾seekp和tellp函数
操作文件流的内部指针
¾close函数
关闭与一个输出文件流关联的磁盘文件
¾错误处理函数
在写到一个流时进行错误处理
¾<< 插入操作符
输入流
¾重要的输入流类型:
istream类最适合用于顺序文本模式输入。

cin是预定义的标准输入对象
ifstream类支持磁盘文件输入
¾提取运算符(>>)
对于所有标准C++数据类型预定义了重载
是从一个输入流对象获取数据最容易的方法
ifstream
¾如果在构造函数中指定一个文件名,在构造该对象时该文件便自动打开。

ifstream myFile("filename",iosmode);
¾在调用缺省构造函数之后使用open函数来打开文件。

ifstream myFile; //建立一个文件流对象
myFile.open("filename",iosmode);
//打开文件"filename“
¾成员函数
open()get()getline()read()seekg()tellg()
close()。

合集下载

C语言输入输出函数全解

C语言输入输出函数全解

文章1Turbo C2.0标准输入输出函数和文件的输入输出函数。

通过本节的学习可以使读者掌握Turbo C2.0的屏幕输出、键盘输入输出以及磁盘文件的读写函数1.1 标准输入输出函数1.1.1 格式化输入输出函数Turbo C2.0 标准库提供了两个控制台格式化输入、输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。

printf()函数用来向标准输出设备(屏幕)写数据; scanf() 函数用来从标准输入设备(键盘)上读数据。

下面详细介绍这两个函数的用法。

一、printf()函数printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。

在编写程序时经常会用到此函数。

printf()函数的调用格式为:printf("<格式化字符串>", <参量表>);其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到的错误。

1. 格式化规定符Turbo C2.0提供的格式化规定符如下:━━━━━━━━━━━━━━━━━━━━━━━━━━符号作用──────────────────────────%d 十进制有符号整数%u 十进制无符号整数%f 浮点数%s 字符串%c 单个字符%p 指针的值%e 指数形式的浮点数%x, %X 无符号以十六进制表示的整数%0 无符号以八进制表示的整数%g 自动选择合适的表示法━━━━━━━━━━━━━━━━━━━━━━━━━━说明:(1). 可以在"%"和字母之间插进数字表示最大场宽。

c语言输入和输出

c语言输入和输出
的方式提供,并存放在一个C标准函数库中。
每一个标准库都有一个相应的头文件,该头文件包含了该库中所 有函数的函数原型及其相关信息。在调用这些库函数时,要用预处理 命令“#include”将有关的“头文件”包括到用户源程序中。标准输入输出库 函数对应的头文件是“stdio.h”。stdio是standard input & output的
3.1 概述
通过终端输入(如键盘、鼠标等),也称为标准输入(standard input),直接向终端输出(如显示器、打印机等),也称为标准输出 (standard output)。
C语言本身没有提供输入输出语句,C语言中的所有I/O操作都是通过函 数调用来实现,而这些并非C语言一部分的输入输出函数均以目标级程序
int main()
{Байду номын сангаас
int *ptr;
/* 定义一个指针 */
scanf(“%[^\n]”, ptr);
printf(“ptr=%s\n”,ptr);
}
设输入为:
How are you!↙
程序输出为:
How are you!
C语言程序设计---第3章
17
第17页,共21页。
3.4.4 scanf()函数应用中两个最常见的问题
printf(“%s\n”,ptr);
}
设输入为:
How are you,John!↙ 程序输出为:
How are you
注:这是由于逗号作为不可接受字符,而作为
字符串的定界符. C语言程序设计---第3章
16
第16页,共21页。
/* 本程序可接收任意字符串的输入 */
#include<stdio.h>

C语言格式输入输出总结.plg

C语言格式输入输出总结.plg
需要注意的是,这两个函数读入的是输入流中当前位置的 字符, 比如:
scanf(“%d”,&n); c = getchar();
假设输入 67/ (假设“/”代表回车),则第一个scanf读入一个整数67后,当 前输入流的位置是67之后,即指向回车符,所以第二个getchar()读入的就 是一个回车符了,即 c = ‘\n’。 同样,gets()也是从当前位置读入一行字符串。 比如: scanf(“%d”,&n); gets(str);
第6页
C语言格式输入输出总结.plg 此时读入字符数组中的字符串就是“\n” 了 所以通常在用scanf读入一个非字符串的类型之后,如果要读入字符,或字 符数组,都用一个额外的getchar()把回车符读掉,若后面跟的不止一个回 车符,可能还有多余的空格的话,就用gets()读掉。
和以上不同的是,scanf(“%s”) 读入的时候是会忽略掉起始时的空格, 回车和制表符的。并且以空格,回车和制表符作为字符串结束的标志。
经常会有这样的题,输入第一行是一个整数,接下来每行的第一个是
一个字符,用来表示某种操作,后面再跟一些数据,比如: 4 A 100 2 B 23 A 23 89 B 34 像这种输入就需要小心,读入字符时不要读成回车符。
为了防止意外,我一般是这样处理这类输入的: char model[2]; Scanf(“%d”,&n); for(…,…,…){
******************************** *******
输出宽度 用十进制整数来表示输出的最少位数。 注意若实际位数多于定义的宽
度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。
输出精度 精度格式符以“.”开头,后跟十进制整数。意义是:如果输出数字,则表

拓展知识9-1 标准输入输出设备文件和流

拓展知识9-1 标准输入输出设备文件和流

拓展知识9-1 标准I/O设备文件和流C程序中经常有大量对文件的输入输出操作,它构成了程序的重要部分,因而C语言提供了很多输入输出的函数,用于两种类型文件输入输出系统:即由ANSI标准定义的缓冲文件系统(也称标准文件(流)输入输出(I/O)系统);另一类是ANSI标准中没有定义的非缓冲文件系统(也称非标准文件(流)输入输出(I/O)系统)。

我们已经熟悉了通过键盘和显示器进行输入输出的一些函数,如scanf,printf 等等,这些通过控制台(键盘、显示器等)进行I/O的操作,可以看作标准文件输入输出系统的一些特例。

任何C程序执行时,系统都定义了5个标准设备文件供使用。

系统自动打开的5个标准设备文件为:键盘(标准输入)stdin 0显示器(标准输出)stdout 1显示器(标准错误)stderr 2串行口(标准辅助)stdoux 3打印机(标准打印)stdprn 4在C中可将数据的输入输出看作是数据的流入和流出,这样不管是普通(磁盘)文件或者是物理设备(打印机、显示器、键盘等),都可看作一种流的源和目的,视他们为同一种东西,而不管其具体的物理结构,即对他们的操作,就是数据的流入和流出。

这种把数据的输入输出操作,抽象化为一种流,而不管它的具体结构的方法很有利于编程,而涉及流的输入输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。

在C语言中流可分为两大类,即文本流(text stream)和二进制流(binary stream)。

所谓文本流是指在流中流动的数据是以字符形式出现。

在文本流中,'\n'被换成回车CR和换行LF的代码0DH和0AH。

而当输出时,则0DH和0AH被换成'\n'。

二进制流是指流动的是二进制数字序列,若流中有字符,则用一个字节的二进制ASCII码表示,若是数字,则用一个字节的二进制数表示。

在流入流出时,对\n符号不进行变换。

【示例】2001这个数,在文本流中用其ASCII码表示为:50 48 48 49共占4字节。

C语言中文件,数据的输入输出,读写

C语言中文件,数据的输入输出,读写

文件文件是数据的集合体,对文件的处理过程就是对文件的读写过程,或输入输出过程。

所谓文件是指内存以外的媒体上以某种形式组织的一组相关数据的有序集合。

文件分类:顺序文件,随机文件。

文本文件和二进制文件。

文本文件也称为ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。

文本文件可以在屏幕上按字符显示,源程序文件就是文本文件,由于是按字符显示,所以能读懂文件内容。

二进制文件是按二进制编码方式来存放的。

这里主要讨论文件的打开,关闭,读,写,定位等操作。

文件的存取方法C程序的输入输出(I/O)有两种方式:一种称为标准I/O或流式I/O,另一种称为低级I/O。

流式I/O是依靠标准库函数中的输入输出函数实现的。

低级I/O利用操作系统提供的接口函数(称为底层接口或系统调用)实现输入输出,低级I/O 主要提供系统软件使用。

在C语言中用一个FILE类型的指针变量指向一个文件,(FILE类型是系统在stdio.h中定义的描述已打开文件的一种结构类型),这个指针称为文件指针。

FILE *指针变量标识符;如FILE *fp;文件的打开与关闭所谓打开文件,指的是建立文件的各种有关信息,并使文件指针指向该文件,以便对它进行操作。

关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。

1、fopen函数原型:FILE *fopen(const char *filename,const char *mode);Fopen函数用来打开一个文件,前一部分用来说明文件路径及文件名,后一部分mode指出了打开文件的存取方式;返回值是被打开文件的FILE型指针,若打开失败,则返回NULL。

打开文件的语法格式如下:文件指针名=fopen(文件名,使用文件方式);文件指针名必须被说明为FILE类型的指针变量。

FILE *fp;fp=fopen(“C:\\Windowss\\abc.txt”,”r”);注意用两个反斜杠\\来表示目录间的间隔符。

C语言02 数据类型及输入输出

C语言02 数据类型及输入输出

– 注意在不同系统中长度可能不同,可用sizeof查看(举例),int 类型在VC中是4B, 而在TurboC中为2B
• • • • •
声明一个变量,类型名 后跟变量名
– 如 char a;
声明多个变量时,变量之间用逗号隔开
– 如:int a,b,c;
用signed修饰符说明有符号数,signed可以省略
适用
输出 输入和输出 输入和输出 输入和输出 输出 输出 输入 输入和输出 输入和输出 输入和输出
ቤተ መጻሕፍቲ ባይዱ
误差来源: 尾数是有限的,有些十进制数变成二进制存储时,长度 超过容纳范围丢失产生误差 在运算中,对阶移位而使部分尾数移出容纳范围而产生 误差
整型常量的表示
• • • • 十进制表示和数学中相同,如35,-36 八进制数用零做前缀,如023,-012, -079(错) 十六进制数用零加x做前缀表示,如0x2a,-0x1f 用L做后缀表示长整数常量,U后缀表示无符号数常量,如 123456789ul • 示例: – #include "stdio.h" – void main(){ – int a,b,c; – a=23;b=023;c=0x23; – printf("%d,%d,%d\n",a,b,c); – }
• 字符串常量用双引号做定界符表示, 如:”a”, ”sdhjfdshjfhjsd”,“”(空串),“ ”(由一个空 格组成的字符串)
实数输出举例
• • • • • • • #include "stdio.h" void main(){ float a=34.5678; printf("%f,%d\n",a,a); } 输出结果:34.567799,-1610612736 说明前面存储时产生误差,后者格式错误输出 完全错误

C语言—数据输入与输出

第三章 数据的输入与输出
C语言没有提供输入、输出语句,输入与输出是通过调 语言没有提供输入、输出语句, 用系统的标准函数实现的。 用系统的标准函数实现的。 字符的输入、 3.1 字符的输入、输出函数 一、字符输入函数getchar 字符输入函数getchar 形式: 形式:getchar( ) 功能:从终端(如键盘)输入一个字符。 功能:从终端(如键盘)输入一个字符。 说明: 说明: 括号中无参数; 1)括号中无参数; 使用该函数时,程序前须有#include stdio.h stdio.h” 2)使用该函数时,程序前须有#include “stdio.h ; 函数值可赋给字符或整型变量。 3)函数值可赋给字符或整型变量。
2、输出项表:由逗号隔开的若干个输出项,输出项可 、输出项表:由逗号隔开的若干个输出项, 以是变量、常量、函数、表达式等。 以是变量、常量、函数、表达式等。 3、格式字符的个数、类型与输出项的个数、类型应相 、格式字符的个数、类型与输出项的个数、 匹配。 匹配。 4、整型数据的输出: 、整型数据的输出: 格式字符: 格式字符: d 例:int a=12; o unsigned b=12; x printf(“%d,%o,%x,%u”, a, a, a, b); u 输出: 输出: ld 12,14,c,12 , , , mld
2、输入项地址表:若干用逗号隔开的地址项组成,其 、输入项地址表:若干用逗号隔开的地址项组成, 逗号隔开的地址项组成 中的地址项形式: 变量名 中的地址项形式:&变量名 3、 、 1)若有:scanf(“%d%d”, &a,&b); )若有: 则输入时打入: ﹍ (回车), ),或 则输入时打入:2﹍3(回车),或: 2)若有:scanf(“%d, %d”, &a,&b); )若有: 则输入时打入: 则输入时打入:2, 3(回车); (回车); 3)若有:scanf(“%d: %d”, &a,&b); )若有: 则输入时打入: 则输入时打入:2: 3(回车); (回车); 4)若有:scanf(“a=%d, b=%d”, &a,&b); )若有: 则输入时打入: 则输入时打入:a=2, b=3(回车)。 (回车)。 回车) 2(回车) 回车) 3(回车)

C语言中输入输出和循环语句详解

int a=65;printf(“%o”,a); 不带符号十进制整数 int a=-1;printf(“%u”,a); 单一字符 字符串 char a=65;printf(“%c”,a); printf(“%s”,“ABC”); float a=567.789printf(“%e”,a); float a=56ห้องสมุดไป่ตู้.789;printf(“%f”,a); float a=567.789;printf(“%g”,a); printf(“%%”);
顺序结构
A B
流程图
选择结构

P

A
B
循环结构 当型循环结构
P 真 A

直到型循环结构

A P 真
、中间量。
程序中涉及的
§3.7 程序举例
例 输入三角形边长,求面积 /*ch3_12.c*/ Ch3_12 #include <math.h> .c 1.输入量:a,b,c. 输出量:area; 中间变量:s 文件包含预处理命令 #include <stdio.h> 2.类型:都是float main() 3.主要算法:上面两个公式。 { 4.编程: float a,b,c,s,area; 变量定义 scanf("%f,%f,%f",&a,&b,&c); 输入数据 (1)确定输入量的编程scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); (2)确定中间量s=1.0/2*(a+b+c); 输出数据 area=sqrt(s*(s-a)*(s-b)*(s-c)); (3)确定算法的编程area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s); (4)确定输出量的编程printf("area=%7.2f\n",area); printf("area=%7.2f\n",area); printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s); } 输入:3,4,6 ↵ 输出:a= 3.00,b= area= 5.33 4.00,c= 6.00,s= 6.50

C语言中字符的输入输出以及计算字符个数的方法详解

C语⾔中字符的输⼊输出以及计算字符个数的⽅法详解C语⾔字符输⼊与输出标准库提供的输⼊/输出模型⾮常简单。

⽆论⽂本从何处输⼊,输出到何处,其输⼊/输出都是按照字符流的⽅式处理。

⽂本流是由多⾏字符构成的字符序列,⽽每⾏字符则由 0 个或多个字符组成,⾏末是⼀个换⾏符。

标准库负责使每个输⼊/输出流都能够遵守这⼀模型。

使⽤标准库的 C 语⾔程序员不必关⼼在程序之外这些⾏是如何表⽰的。

标准库提供了⼀次读/写⼀个字符的函数,其中最简单的是 getchar 和 putchar 两个函数。

每次调⽤时,getchar 函数从⽂本流中读⼊下⼀个输⼊字符,并将其作为结果值返回。

也就是说,在执⾏语句c = getchar()之后,变量 c 中将包含输⼊流中的下⼀个字符。

这种字符通常是通过键盘输⼊的。

每次调⽤ putchar 函数时将打印⼀个字符。

例如,语句putchar()将把整型变量 c 的内容以字符的形式打印出来,通常是显⽰在屏幕上。

putchar 与 printf 这两个函数可以交替调⽤,输出的次序与调⽤的次序⼀致。

借助于 getchar 与 putchar 函数,可以在不了解其它输⼊/输出知识的情况下编写出数量惊⼈的有⽤的代码。

最简单的例⼦就是把输⼊⼀次⼀个字符地复制到输出,其基本思想如下:读⼀个字符while(该字符不是⽂件结束指⽰符)输出刚读⼊的字符读下⼀个字符将上述基本思想转换为 C 语⾔程序为:#include <stdio.h>/* copy input to output; 1st version*/main(){int c;c = getchar();while (c != EOF) {putchar(c);c = getchar();}}其中,关系运算符!=表⽰“不等于”。

字符在键盘、屏幕或其它的任何地⽅⽆论以什么形式表现,它在机器内部都是以位模式存储的。

char 类型专门⽤于存储这种字符型数据,当然任何整型(int)也可以⽤于存储字符型数据。

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 文件名
➢文件路径表示文命 识件名 符在规 的外则 命部遵 名存循 规储标 则设备中的位 置。如:
➢“文件”指存储在外部介质上数据的集合
一批数据是以文件的形式存放在外部介质上的 操作系统是以文件为单位对数据进行管理 想找存放在外部介质上的数据,先按文件名找
到所指定的文件,然后再从该文件读数据 要向外部介质上存储数据也必须先建立一个文
件(以文件名作为标志),才能向它输出数据
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档