收藏 分享(赏)

C语言输入输出函数格式详解.doc

上传人:HR专家 文档编号:11560129 上传时间:2020-06-24 格式:DOC 页数:8 大小:224.50KB
下载 相关 举报
C语言输入输出函数格式详解.doc_第1页
第1页 / 共8页
C语言输入输出函数格式详解.doc_第2页
第2页 / 共8页
C语言输入输出函数格式详解.doc_第3页
第3页 / 共8页
C语言输入输出函数格式详解.doc_第4页
第4页 / 共8页
C语言输入输出函数格式详解.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、1、输入和输出:输入:输入也叫读,数据由内核流向用户程序输出:输出也称写、打印,数据由用户程序流向内核以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用2、printf用法(其缺陷在于带缓存)printf输出时必须加上n(刷新缓存)解释:第一幅图没有加n,不会刷新缓存区,则不会打印出来;第二幅图是因为主函数结束时刷新了缓存区,但由于没有换行符,所以没有换行便显示了后面的内容;第三幅图时正常打印。变量定义的是什么类型,在printf打印时就需要选择什么格式符,否则会造成数据的精度丢失(隐式强转),甚至会出现错误修饰符功能m输出数据域宽,数据长度m,则自动取n值,即保证n个字

2、符正常输出。 G、f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法: %f:不指定宽度,整数部分全部输出并输出6位小数。 %m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。 %-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。 对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位 对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位 H、e格式:以指数形式输出实数。可用以下形式: %e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。 %m.ne和%-m.ne:m、n和-字符含义与前相同。此处n指数

3、据的数字部分的小数位数,m表示整个输出数据所占的宽度。 I、g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。 (4)h和l前缀及u %hd -short int %ld -long int %lld -long long int %lu -unsigned long %llu -unsigned long long %ho-八进制显示short整数 %lx-十六进制显示long整数 %le -以科学计数法表示long double(5)特殊说明 A、需要打印%时,必须之前还要加上一个% printf(%f%, 1.0/3);输出0.333333% B、*的用法 a、print

4、f(%*dn,8,100);结果:(前面空五格)100 b、int m = 8;printf(%*dn,m,100);结果:(前面空五格)100 c、char ch20;printf(%*.*sn,m,n,ch);说明:前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。 C、%n的用法:可以将所输出字符串的长度值赋给一个变量 int slen;printf(hello world%n, &slen);执行后变量slen被赋值为113、scanf函数(主要缺陷就是在缓冲区制造垃圾字符,不建议太过复杂

5、的用法)(1)结束条件 A、空格、TAB或回车 B、宽度结束 C、非法输入(比如程序里scanf中是%d的形式,结果输入的时候输入一个浮点类型的数)(2)格式说明符(3)scanf函数返回正确读取的元素的个数 int a,b,c; scanf(%d%d%d,&a,&b,&c);/不能忘了写取地址符 正确输入时其返回值为3(4)输入的格式要与程序里的格式保持一致 int a,b,c; scanf(%d,%d,%d,&a,&b,&c); 输入的时候要输入2,3,4才是正确的(5)抑制符* 这里跟printf中不同,他表示指定输入项读入后不赋给变量 int a,b; scanf(%3d%*4d%f,

6、&a,&b); printf(a = %d,b = %fn,a,b); 则:输入1234567890,输出为:a = 123,b = 890.000000(6)垃圾字符(详见4getchar中的解释)4、字符输入输出getchar和putchar (1)putchar A、在理解getchar()之前,首先搞清楚一个概念: 当从键盘上输入字符(数字、字符、符号)时,系统是默认先把输入的内容先存放在缓存空间上,当按下回车(Enter)键后getchar(),才开始从缓存空间逐一开始读取数据,注意getchar(),读取数据是逐一、单个读取的,也就是一次只读取一个字符的值,返回对应字符的ASCII

7、码值。 B、理解上面内容,那么: a、如果想要检测输入的字符是哪一个,可以用getchar()和对应字符的ASCII值进行比较,注意比较的形式必须是: 例如:if(getchar() != a | getchar() != n)的这种形式,即检测从键盘上输入的是不是a或者回车。 b、getchar()从缓存里面读取数据,直到它读取到回车键时才结束 c、如果从键盘上输入一连串的字符 例如:输入adndjdjejd3458jjjfkal按下回车键(他也会被getchar读取),缓存区中内容为adndjdjejd3458jjjfkaln d、scanf()函数从缓存区读取数据的时候,不读取回车键,不

8、返回回车键的值;getchar()函数从缓存区读取数据的时候,读取回车键,而且会将回车键的值进行返回,同时读取回车后结束本次读入 那么,在使用完scanf或者getchar之后如果还有输入函数,甚至scanf遇到非法输入结束,下一个函数必然会读取他们在缓冲区遗留的垃圾,这就是其缺陷所在。 (2)putchar不带自动换行举例:1、/*输入a b时取到的ch2是空格(输入时产生的)*/#include int main(int argc, const char *argv) char ch1; char ch2; char ch3; ch1 = getchar(); ch2 = getchar(); ch3 = getchar(); printf(mun = %dn,ch2); putchar(n); printf(ch1 = %c, ch2 = %cn,ch1,ch2); return 0;5、字符串输入输出gets和puts (1)gets函数不以空格作为字符串输入结束的标志,而以回车作为结束标志。 缺陷:由于c语言中数组的长度必须事先给定,所以输入很容易超出这个长度,数组越界(这是很严重的问题) (2)puts函数在输出字符串时,会自动追加n。使用时,注意字符数组必须以0结束。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报