嵌入式学习的第四天——输入输出

目录

1.输入输出

2.输入输出功能

3.函数

getchar

putcahr

printf 

scanf


1.输入输出

概念:输入 --->计算机(内存)--->输出

2.输入输出功能

(1)C语言本身并不提供输入输出功能,使用的是C语言函数库中的“标准输入输出函数”

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

        getchar/putcahr  // 操作一个字符

        gets/puts            // 操作一个字符串 

        scanf/printf         // 格式化的函数 

(3)需要加上<stdio.h>头文件

3.函数

getchar

getchar(void)  // 函数原型

功能:从键盘上获取一个字符

参数:void ---表示为空,使用时不需要给实参

返回值:获取到的字符的ASCII码

putcahr

putchar(int c)        //函数原型

功能:c --- 表示要输出的字符

返回值:成功:输出的字符的ASCII码

              失败:-1

printf 

printf()        //格式化输出函数

int printf(const char * format,···);        //函数原型

···        //表示可变参数

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

其中格式控制字符串分为两种,普通字符和占位符。

最经典的普通字符就是printf("Hello World");中的Hello World,遵循原样输出的规则

而占位符是为了匹配后面输出的参数

整形的占位符

%d —— 将输出参数转换为有符号十进制

%u —— 将输出参数转换为无符号十进制

%o —— 将输出参数转换为八进制形式

%x —— 将输出参数转换为十六进制形式,a,b,c,d,e,f小写

%X —— 将输出参数转换为十六进制形式,a,b,c,d,e,f大写

浮点型

%f —— 将输出参数转换为十进制的小数,输出时默认保留6位小数,不足6位的补0

%e —— 将输出参数转换为科学计数法形式

%g —— 将输出参数以一种更简洁的方式输出,同时不会输出无意义的0

字符型

%c —— 将输出参数转换为字符形式输出

%s —— 将输出参数转换为字符串形式输出

在占位符%的后面可以加入辅助控制符 

辅助控制符有

# —— %#o        //打印出八进制的前缀

           %#x        //打印出十六进制的前缀

m —— 任意数字,表示要输出数据的宽度,如果数据本身的宽度>m此时按照实际宽度输出,如果数据本身的宽度<m则按照m的宽度输出,空出的位置填空格,默认右对齐

printf("%8d",1234);
输出结果为
____1234前面4位为空

 -m —— 表示左对齐

printf("%8d",1234);
输出结果为
1234____后面4位为空

0m —— 在多出的位置填0,只在右对齐时有效

printf("%08d",1234);
输出结果为
00001234前面4位为空

.n —— n为数字

%.2f 保留两位数字 %.2s 保留前两个字符 只有这两个占位符能用‘.’这个辅助控制符

l —— long型需加

ll —— longlong型需加

h —— half // hd 整形的一半,对应输出类型为short

hh —— halfhalf 

注意:占位符应与输出参数一一对应

scanf

scanf        //格式化输入函数

scanf("格式控制字符串",地址列表)

(1)格式控制字符串        //与printf中的一样

a.普通字符 —— 原样输入

b.占位符 —— 将键盘输入的数据,转换成指定的格式

在scanf中占位符输入的时候要与输入参数的类型做到精确匹配

%f —— float

%lf —— double

%Lf —— long double

%d —— int

%ld —— long

%lld —— long long

(2)地址列表

在输入参数时要在参数前加取地址符号&

scanf中的注意事项:1.scanf格式控制字符串中,尽量不用普通字符,一般只写占位符。2.scanf的地址列表中,一定是有效列表,否则可能出现Segmentation fault (core dumped) 段错误 --- 产生原因:访问到了 不能访问的内存空间 。3.scanf输入结束的条件(匹配结束的条件)(a)遇到非法字符,如输入123a45到%d中,只能输入123,a是不属于整形类型非法字符,所以输入到a结束。(b)遇到空白符,匹配结束。空白符有空格,回车和tab。(c)超过指定的宽度,匹配结束。如%5d宽度为5,输入123456的结果只有12345.

关于scanf的空白符匹配,scanf的格式控制字符串中,如果出现空白符,表示匹配任意多个空白符,%*c表示一个数据项,但是并不把这个数据给到任何一个变量中。

 

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值