目录
输入输出
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') 清除了缓存区,程序正常如愿运行
标签:小白递,函数,输出,输入输出,嵌入式,字符,输入,getchar From: https://blog.csdn.net/weixin_68641081/article/details/140713487