当前位置: 首页 > news >正文

2.C语言——输入输出

1.字符输入输出函数

1.输入:getchar()

字面意思,接收单个字符,使用方法

char a;
a = getchar();实际上效果等同于char a;
scanf("%c",&a);

2.输出:putchar()
在这里插入图片描述
在这里插入图片描述

2.格式化输入输出函数

1.输入:scanf()

格式: scanf(“格式控制字符串”,地址列表);

如果格式符之间添加了空格,那么按照规则,会忽略掉全部的空白符直到遇到下一个不是空白符的字符

格式说明符意义
%d输入有符号的十进制数
%u输入无符号的十进制数
%o输入无符号的八进制数
%x/X输入无符号的十六进制数
%i输入八进制,十进制,十六进制数 (更通用)
%c输入单个字符
%s输入字符串,将字符串送到一个字符组中,在输入时以非空白字符开始以第一个空白字符结束
%f输入实数,可以用小数形式或指数形式输入
%e,E,g,G与f作用相同,e与f,g可以相互替换

附加格式符(也称修饰符)

字符说明
h输入短整型数据(可用到%hd,%ho,%hx)
l输入长整型数据(可用到%ld,%1o,%lx.%lu)以及double型数据%lf,%le)
域宽指定输入数据所占的宽度(列数),域宽应为正整数
*本输入项在读入后不赋给相应的变量

举例
读入整数

读入一个整数:
int a;
scanf("%d",&a);读入多个整数  输入12 1 3
int a,b,c;
scanf("%d %d %d,&a,&b,&c);读入以逗号分隔的多个整数:  输入1,2,3
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);总之一句话,按照格式输入进行读取整数

读入其他类型的数字
参考读入整数,其他类型的数字使用方式相同,要注意的是
为了读取长整数,可以将 l 放在格式说明符的前面(如%ld,%lu);
为了读取短整数,可以将 h 放在格式说明符的前面(如%hd),
如果要强调。这些修饰符可以与 d、i、o、u 和 x 格式代码一起使用。

读入单个字符
在用%c格式声明输入字符时,空格“转义字符”中的字符都会作为有效字符输入!所以如果要连续赋给变量

scanf(”%c%c%c",&a,&b,&c),此时应该连续输入abc,而不是a b c。int i;
char k;
scanf("%d %c",&i,&k);
/**
* 这个时候输入"1\na"和"1a"的效果是一样的,因为无论怎么换行,都属于空白符,会被忽略
*/
scanf("%d%c",&i,&k);
/**
* 这个时候输入"1\na",运行后k会接收到换行符,而不是"a",因为空白符没有被忽略,而%c对所有字符一视同仁。
*/

读入字符串
始终要注意的是读入字符串是scanf()方法的功能,而该方法是属于c的,因此它不支持c++新增的string类型

char str[80];
scanf("%s",str);//注意这里不需要&,因为str是数组,传入的已经是指针了

要注意%s虽然是读入字符串,但它也会忽略空白符,下面例子中的两行scanf()方法是等价的,因为%s本身就有忽略空白符的功能。

char stra[80];
char strb[80];
scanf("%s %s",stra,strb);
scanf("%s%s",stra,strb);
以非空白字符开始,以第一个空白字符结束为第一个字符串

虽然会忽略空白符,但是会主动的在最后一个字符后添加"\0"表示字符串结束(也因此,char数组不需要初始化就可以接受字符串,一般情况下不影响操作),因此在设置char数组长度时候,最好要比理论中的最大长度多预留一个长度

char str[5];//如果题目接受的最大字符串长度是4,那么设置的数组长度最好大于等于5
scanf("%s",str);

要注意的是,方法对空白符的忽略不是抛弃了空白符,如果没有继续读下去的话,接受字符串后的空白符是会保留在缓冲区的,这个时候使用%c接收是可以接收到,这个可能困扰了很多人,一定要注意。

char k;
char str[10];
scanf("%s%c",str,&k);
/**
* 如果输入"abcd",那么会直接运行结束,str="abcd",k='\n'
*/

输出

1.输出:printf()

printf函数一般格式:printf(格式控制,输出列表)

格式说明部分由“%”和“格式字符串”组成。它表示按规定的格式输出数据。

格式说明的形式为:%[flags][width][. prec][h|L]type
各部分说明如下。

  • flags

    — 左对齐输出;默认为右对齐输出。
    + 正数输出加号(+),负数输出减号(一)。
    空格 正数输出空格代替加号(+),负数输出减号(一)。

  • width

    为可选择的宽度指示符。十进制正整数表示,用来设置输出值的最少字符个数。不足则补空格;多出则按实际输出。默认则按实际输出。

    例如:

    printf("%8d\n", 100);
    printf("%6d\n", 100);
    printf("%-8d n", 100);
    printf("%+8d\n", 100);
    

    输出结果:

    □□□□□100
    □□□100
    100□□□□□
    □□□□+100
    
  • [.prec]

    为可选的精度指示符,“小数点”加“十进制正整数”表示,对“整数”、“实数*“字符串”的输出有如下功能:对“整数”,表示至少要输出的数字个数,不足补数字0,多则原样输出;对“实数”,表示小数点后至多输出的数字个数,不足则补数字0,多则作舍入处理;对“零符串”,表示最多输出的字符个数,不足补空格,多则丢弃。

    printf("%8.2f\n",3.14159); 
    printf(%8.5f\n”,3.14159);
    

    输出结果:

    □□□□3. 143. 14159
    
  • 格式字符

    在这里插入图片描述

*号的用法

*在printf里可以代表一个泛整数,可以代表任何整数。它可以出现在位宽的位置,也可以出现在小数位数的位置。但在printf的双引号外面,必须要有*对应的数值

比如我的位宽不确定,想用整数a表示,则可以写成:
在这里插入图片描述

http://www.lryc.cn/news/301453.html

相关文章:

  • MySQL篇之SQL优化
  • QGis —— 1、Windows10下载安装QGis及插件
  • 【打工日常】使用docker部署Dashdot工具箱
  • 使用client-only 解决组件不兼容SSR问题
  • 基于Java SSM框架实现网上报名系统项目【项目源码+论文说明】
  • 7.1 Qt 中输入行与按钮
  • 云计算基础-网络虚拟化
  • 166基于matlab的通过峭度指标与互相关系数筛选IMF进行SVD分解去噪
  • 第六十三天 服务攻防-框架安全CVE复现DjangoFlaskNode.JSJQuery
  • 最大子序和+旅行问题——单调队列
  • Unity设备分级策略
  • 自己在开发AI应用的过程总结的 Prompt - 持续更新
  • STM32——OLED菜单
  • Open CASCADE学习|布尔运算后消除内部拓扑
  • 【数据仓库】主题域和数据域
  • C#,二分法(Bisection Method)求解方程的算法与源代码
  • Portainer安装/快速上手
  • 恢复被.target勒索病毒加密的数据文件:拒绝向.target勒索病毒支付赎金
  • 【Linux网络编程六】服务器守护进程化Daemon
  • MySQL之json数据操作
  • 【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(5)数据管理
  • Linux满载CPU和运行内存的方法
  • 每日五道java面试题之java基础篇(九)
  • spring @Transactional注解参数详解
  • D - 串结构练习——字符串连接
  • 什么样的服务器是高性能服务器?
  • 数学建模【线性规划】
  • ChatGPT的大致原理
  • 蓝桥杯备赛_python_BFS搜索算法_刷题学习笔记
  • 轮播图的五种写法(原生、vue2、vue3、react类组件,react函数组件)