输入与输出:scanf函数和printf函数

  在写一个程序时,我们往往希望能够实现与程序的交互:向程序中输入,以影响程序的执行方式;把程序的结果打印在屏幕/控制台上,将程序的结果可视化.

  C语言提供了两个函数来进行输入和输出的工作,分别是scanf函数和printf函数

1-scanf函数

  scanf函数用来读取用户的输入

  其基本语法是scanf("占位符",&变量名),常见的占位符有%d,%s,%c等(比较多由读者自行查找).占位符的作用是告诉编译器用户输入的数据是哪一种类型的数据."&"是取地址操作符(除非后面的变量是指针变量,否知不能省略),"&"结合后面的函数名,意思是将用户的输入放在变量对应的地址中(简单来说就是将用户的输入赋值给后面的变量).

  当程序运行到scanf函数时会停下,等待用户输入(没用时间限制,用户不输入,程序就不往下执行).当用户输入数据后,数据会先被存储到内存中,当用户按下回车键之后数据才会被赋值给变量

  在用scanf函数进行输入时,可以一次输入多个数据,但输入的数据类型必须和占位符一一对应,输入的数据与数据之间可以用空白字符(空格 制表符 换行符等)隔开,以区分开输入的数据.scanf函数读取输入时会跳过这些空白字符

  scanf函数在读取多个数据时,是从上一个断点开始,到读取完下一个数据或遇上下一个不符合类型的数据结束.这样的读取机制会产生一些小bug.拿下面的例子举例:

  这里第一个数据读取到 . 时结束,正确读取了数据.但是读取第二个数据的时候是从第一次读取的数据的末尾 . 开始的,一开始就马上读取到了不符合类型的 . 导致第二个数据的读取马上结束,读取失败.

    若想避开这种问题,或者想用其它字符隔开数据,再或者担心用户在数据之间误添加符号,可以在占位符中间加入%*c,这样scanf函数读取数据时会将中间的字符一并读取,但是读取之后会舍弃掉读取的字符

  scanf函数的返回类型是int,表示成功读取的数据的个数,在一些场合下可以用来检验输入的数据是否被正确读取.若没有变量接收返回值,编译器会报警告(无伤大雅,不一定要理会)

  如果用户输入数据前,使用control+c强制结束程序时一个都没有成功读取时,scanf会返回EOF,即-1
值得注意的是:在VS2022中,直接使用scanf函数会报警告:scanf不安全,推荐使用scanf_s,但scanf_s不是C语言提供的函数,只是VS2022提供的,在其它编译器上无法编译,会降低代码的可移植性,不推荐使用,只需要在文件的开头给上#define _CRT_SECURE_NO_WARNINGS就可以忽略,正常使用

2.printf函数

  printf函数是C语言提供,用来打印信息在屏幕上的函数

  printf函数的基本格式是printf("占位符",变量名),占位符要和变量名的类型相对应

  使用printf函数时可以控制输出的形式:如控制浮点数的显示位数和最小输出宽度:

图中%号后面的数字就是用来控制输出的,整数部分控制的是最小输出位数,小数部分是控制保留的小数位数,一般情况下,当数据本身长度超过了最低限制宽度,那么printf中限制宽度的操作就无效了,数据正常打印(如第一个图),若数据本身长度不够,printf就会用空格补足,一般在左边补齐空格(如第二个图)

3.一些补充

scanf和printf使用时要包含头文件<stdio.h>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值