首页 > 其他分享 >嵌入式小白递第四天——输入输出

嵌入式小白递第四天——输入输出

时间:2024-07-26 21:27:47浏览次数:13  
标签:小白递 函数 输出 输入输出 嵌入式 字符 输入 getchar

目录

输入输出

1.输入输出概念

2.输入输出功能

3.输入输出函数

1).getchar/putchar函数

getchar函数:

putchar函数:

2)print和scanf函数

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

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

4.输入缓冲区

输入输出

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

相关文章

  • 嵌入式小白第三天——数据类型 运算符 表达式
    目录运算符表达式运算符1.运算符的优先级和结合性2.运算的对象的个数3.表达式4.算术运算(+-*/%)/号%号5.自增运算符与自减运算符(++--)a++与++a区别左值与右值问题6.赋值运算7.逗号运算(顺序求值运算)8.强制类型转换9.隐式类型转换10.不同类型间的混合赋值......
  • 嵌入式领域的专业名词大揭秘
    在嵌入式这个充满技术魅力和创新挑战的领域中,有许多特定的专业名词,对于初学者或者想要深入了解的朋友来说,熟悉这些名词是踏入嵌入式世界的重要一步。下面就让我们一起来探索一下嵌入式领域常见的专业名词。https://ad.pdb2.com/l/CPCeKnK8DHfjEiN1.微控制器(MCU):可以把它想象成......
  • 为什么越来越多的人要转行做嵌入式呢
    在当今的科技领域,嵌入式系统的应用无处不在,从智能家居到工业控制,从汽车电子到医疗设备。与此同时,我们也发现越来越多的人选择转行进入嵌入式领域,这背后究竟有着怎样的原因呢?一、行业需求持续增长随着物联网、人工智能等技术的飞速发展,嵌入式系统作为这些技术的重要支撑,市场需......
  • 嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示
    项目概述随着智能技术的发展,智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航,实时检测异常情况(如火灾或入侵者),并将数据发送到后端服务器,以实现高效的监控和应急响应。主......
  • c语言学习之输入输出--getchar、scanf、printf
    1.输入输出功能  (1).C语言本身并不提供输入输出功能。  使用的是c语言函数库中的"标准输入输出"函数 (2).c语言函数库提供的输入输出函数   getchar、putchar:操作一个字符 'a'  gets、puts:操作一个字符串 如"abcd"   scanf、printf:格式化......
  • C语言中的输入输出
    简单格式的输入输出简单的输出语句:printf语法printf"格式控制"输出表列举例:printf("%d,%f,%c",a,b,c);说明:由%和特定字符组成,如:%d、%c、%f等,是格式说明符,用于说明输出项目所采用的格式;基本的格式字符%d按十进制整型数据的实际长度输出。%c仅输出一个字符。......
  • python 输入输出
    输入输出**注**所有内容均是在pycharm中通过python3.7的解释器进行运行的格式:变量=input('提示词')#输入提示词在控制台显示,要输入的内容在提示词后面输入print(变量)#输出print('输出内容')#在''内部的内容原封不动......
  • 0基础学嵌入式day01
    一、C语言概述    1、什么是程序        程序是为了解决某些问题或者实现某些功能的一系列有序指令的集合。    2、计算机语言简史        第一代机器语言:由0和1组成的二进制机器码。        第二代汇编......
  • EMS/PCS/BMS/充电桩/逆变器新能源设备处理器选型-米尔嵌入式
    随着全球对可持续发展的日益关注,新能源技术作为替代传统能源的重要选择,正迅速发展并深入各个领域。在这一技术革新的浪潮中,嵌入式技术作为关键的智能化解决方案,正在为新能源行业的发展注入新的动力和创新。本文旨在为新能源行业的开发者解决嵌入式处理器选型难题。1.米尔嵌入式处......
  • Selenium WebDriverWait 无法检测用于使用 Selenium 提交嵌入式视频答案的表单元素
    我一直在使用Selenium编写一个机器人来自动化学校强迫我做的系列教程。在本教程中,有一个视频在中途提示用户填写表格和一些问题。我一直在尝试使用此代码在视频播放时等待,直到表单可见WebDriverWait(driver,1000).until(EC.presence_of_element_located((B......