嵌入式第4天(输入输出)

OK老样子,今天开头还是每日小知识

如何起一个好名字

1.驼峰命名法

2.内核命名法

3.见名之意

4.尽量不要用拼音

5.看情况简写

小tps:printf返回值是输出的个数

接下来进入今天的正题

输入输出

概念:

对于计算机本身而言的输入输出

输入输出功能

1.c语言本身并不提供输入输出功能。

使用的是c语言库函数中的函数

2.c语言库函数提供的输入输出函数

scanf/printf

gets/puts

getchar/putchar

getchar先存缓冲区,缓冲区出现/n就读取一位数据(应用:不用\n就可以换行)

f9eaefc3fb2748669e74c7683f346ce5.png

 

在 C 语言的 printf 函数中,常用的格式字符及其含义如下

-  %d :按十进制整型数据的实际长度输出有符号整数。
-  %ld :输出长整型数据。
-  %md : m 为指定的输出字段的宽度。如果数据的位数小于 m ,则左端补以空格;若大于 m ,则按实际位数输出。
-  %u :输出无符号整型。
-  %c :用来输出一个字符。
-  %f :用来输出实数(包括单精度和双精度),以小数形式输出。不指定字段宽度时,由系统自动指定,整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入。
-  %.mf :输出实数时小数点后保留 m 位。
-  %o :以八进制整数形式输出。
-  %s :用来输出字符串。
-  %x (或 %X 或 %#x 或 %#X ):以十六进制形式输出整数。如果是小写的 x ,输出的字母就是小写的;如果是大写的 X ,输出的字母就是大写的;如果加一个 # ,就以标准的十六进制形式输出(会加上前缀 0x )。
-  %e :以指数形式输出实数,数字部分小数位为 6 位。
-  %E :与  %e  类似,但指数部分用大写字母  E  表示。
-  %g :根据数值的大小,自动选择  %f  或  %e  格式中较短的一种输出,不输出无意义的零。
-  %G :与  %g  类似,但指数部分用大写字母  E  表示。
 
此外,还可以在格式字符和 % 之间插入修饰符,常见的修饰符及其作用如下:
 
-  l :用于长整数型输出,可加在格式符 d 、 o 、 x 、 u 前面。
-  m :数据最小宽度,即数据从左到右的宽度(不是小数点后的精度)。当实际位数少于最小宽度时,若不使用 0 修饰符,则在前面补空格;若使用 0 修饰符,则在前面补 0 。
-  - :表示输出的数字或者字符在域内向左靠(默认为右对齐)。
-  n :对实数表示输出小数点后 n 位小数,对字符串表示截取 n 个字符。
 
例如, printf("%5d\n", i);  表示以至少 5 位的宽度输出整数 i ,右对齐,左边不足的位数补空格; printf("%.5f\n", i);  表示输出小数点后保留 5 位的实数 i ; printf("%-5d\n", i);  表示以至少 5 位的宽度输出整数 i ,左对齐,右边不足的位数补空格。
 
同时, printf 函数还支持一些其他标志和选项,用于控制输出的精度、宽度、填充字符和对齐方式等。例如: %-10s 表示左对齐并占用宽度为 10 的字符串; %5.2f 表示右对齐并占用宽度为 5,保留两位小数的浮点数; %#x 表示输出带有 0x 前缀的十六进制数。
 
在使用 printf 函数时,要注意格式字符和输出参数的类型匹配,以及格式控制字符串中格式字符和输出参数的数量对应关系。如果格式控制字符串中没有 % 引导的格式字符,则不需要输出值参数表,直接输出字符串内容;如果有 % 引导的格式字符,则输出值参数表中的数量以及类型必须和格式字符一致。

scanf函数常用的格式符有:

  • %d:按十进制整数格式输入或输出整数。
  • %f:按小数或浮点数格式输入或输出浮点数。
  • %c:按字符格式输入或输出字符。
  • %s:按字符串格式输入或输出字符串。
  • %u:按无符号整数格式输入或输出无符号整数。
  • %x:按十六进制整数格式输入或输出整数。
  • %lf:按双精度浮点数格式输入或输出浮点数。
  • %ld:按长整数格式输入或输出长整数。
  • %lld:按长长整数格式输入或输出长长整数。
  • %lu:按无符号长整数格式输入或输出无符号长整数。

注意:在使用scanf函数时,格式符前面可以添加一些修饰符,如%10d表示输入或输出一个10位宽的整数。scanf匹配过程中遇到空白符就会停。

 

缓冲区:输入输出都有缓冲区

在 C 语言中,输入输出缓冲区是用于暂时存储输入和输出数据的内存区域。

 

对于输入,当用户通过键盘输入数据时,这些数据并不是立即被程序读取,而是先存储在输入缓冲区中,直到遇到特定的条件(如换行符或输入结束),程序才会从缓冲区中读取数据。

对于输出,当程序向标准输出(通常是屏幕)发送数据时,数据也不是立即显示,而是先存储在输出缓冲区中。当缓冲区满、遇到换行符或调用特定的刷新函数(如  fflush  )时,缓冲区中的数据才会被实际输出。

合理地处理输入输出缓冲区可以确保程序的输入输出行为符合预期,避免一些由于缓冲区导致的意外情况。例如,在输入时,如果希望在输入中途获取已经输入的数据,可能需要手动刷新输入缓冲区。在输出时,如果希望数据立即显示而不是等待缓冲区满或换行,也可以使用  fflush  函数进行强制刷新。

还有一个清缓冲区的操作

while(getchar()!=`\n`);

c2b717adf5b641ee973221a4fe29956b.png

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值