输入输出函数

目录

输入输出

1.输入输出概念

2.输入输出功能

3.输入输出函数

1).getchar/putchar函数

getchar函数:

putchar函数:

2)print和scanf函数

print函数(格式化输出函数):

scanf函数(格式化输入函数):

4.输入缓存区

5.gets和puts函数


输入输出

1.输入输出概念

输入是将数据通过外设设备输入到计算机内存中去

输出是将计算机内存中的数据输出出来显示器或其他东西上

2.输入输出功能

(1)C语言本身是不提供输入输出语句的,输入和输出操作是由C函数库中的函数来实现

(2)C语言函数库提供的输入输出函数

getchar/putchar:它们是操作一个字符的输入输出,例如'a';

gets/puts:它们是操作一个字符串的输入和输出,例如"advad";

scanf/printf:它们是格式化函数

(3)在使用这些函数需要加上头文件<stdio.h>头文件

3.输入输出函数

1).getchar/putchar函数

getchar函数:

函数原型:int getchar(void);

功能:从键盘(输入设备)中获取一个字符;

返回值:它的返回值是获取到的字符的ASCII码值。(例如:int ret ;ret = getchar())

putchar函数:

函数原型:int putchar(int c);

功能:向终端输出一个字符;

参数c:c可以是字符型变量或者整型变量;

返回值:成功调用函数时输出的是字符的ASCII码值;反之失败了输出-1.

注:1.int putchar();getchar();有多少个函数语句就会输入输出几个字符

2)print和scanf函数

print函数(格式化输出函数):

一般格式为printf("格式控制字符串",输出参数列表);

(1)格式控制字符串分为普通字符和占位符

普通字符就是原样的输出出去;占位符(用%开头的字符)是用来匹配后面的输出参数的,注意一个占位符对应的一个参数,第一个占位符匹配第一个参数,第二个占位符匹配第二个

占位符类型:

整型包括 %d(将结果转换为有符号的十进制形式);%u(将结果转换为无符号的十进制形式);%o(将结果转换为八进制形式);%x(将结果转换为十六进制形式);%X(将结果转换为十六进制形式,且转换成的abcdef全部以大写字字母输出,0x中的x也会变写

浮点型包括 %f(将结果转换为十进制形式的小数,输出时默认保留6位小数,小数不足6位时,在其后面进行补0);%e/E(两个都是以科学计数法的形式表示,只是一个用e一个用E);%g(将结果以一种更简洁的方式输出,同时不会输出无意义的0)

字符型包括 %c(将结果转换为字符形式输出);%s(转换为字符串形式输出)

(2)在占位符中间还存在着辅助控制符,例如%[辅助控制符]d;

辅助控制符:

#:有%#x和%#0两种形式,它们是将结果打印出16进制和八进制的前缀0x/0;

m:m所代表的是数字,表示打印出的输出数据的需要占的宽度,如果数据本身的宽度>m,此时按m的实际宽度输出;如果此时数据本身的宽度<m,此时按照m的宽度输出,空出来的位置用空格填补且默认右对齐

据本身的宽度>m

数据本身的宽度<m

如果在%md的m前面加个-号(%-md)则是左对齐

.n :n代表的也是数字,常勇于%.nf(保留n位有效数字)和%.ne(保留n位小数)

(3)输出参数列表(可以是表达式)

scanf函数(格式化输入函数):

一般格式为printf("格式控制字符串",地址列表);

返回值:它的返回值是它成功输入的次数;

(1)格式控制字符串(与printf中一样划分)

普通字符是原样输入;占位符是从键盘输入的数据转换成指定格式输入。

(2)地址列表、

例如:int a; scanf("a = %d",&a);&a为地址列表,不能写成变量名a

注意:(对能识别的字符称为合法字符,不能识别的字符称为非法字符)

1.scanf尽量不出现普通字符,只出现占位字符;

2.scanf的地址列表中,一定是有效的地址;

3.scanf输入结束的条件(匹配结束的条件)——遇到非法字符;遇到空白符(空格、回车、Tab);超过指定的宽度,都会造成匹配结束;

4.scanf的格式控制字符串中,如果出现空白符,表示输入中匹配多个任意空白符。

其中%*c表示匹配一个数据项但是并不把这个数据给到任何一个变量中。

(3)辅助控制符

%md:表示数据输入的宽度;%f匹配float类型;%lf匹配double类型,%Lf匹配long fouble类型。

4.输入缓存区

输入函数getchar存在输入缓存区,键盘在输入了一个字符时按下回车时,此时缓冲区是有着a和'\n'两个字符,当getchar获取字符时只获取了第一个字符a而留着'\n'在缓区中 

同样具有缓存区的还有scanf函数,这一明显的体现在循环语句中,当输入一个非法字符时,匹配结束,但运用循环时,缓存区会一直有这个非法字符,导致一直重复运行,例如   

此时程序一直重复运行

运用whlie(getchar() != '\n')   清除了缓存区,程序正常如愿运行

5.gets和puts函数

在后面字符型数组中;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值