scanf函数和printf函数详解

在这里插入图片描述

hello ! 大家好啊! 经过了前几章的学习我们了解了 C 语言的常见概念以及一些基本的操作符,希望大家能够有所收获,接下来呢就让我来为大家介绍 C 语言之中的 scanf 函数 和 printf 函数吧 !让我们一起开启今天的学习之旅吧~

printf 函数的介绍、

printf 函数的基本用法

printf()的作用是将输入文本打印到屏幕上,它名字里面的 f 代表着格式化(format),表示可以定制输出文本格式。
下面就让我来带给大家一段都熟悉的代码来展示printf 函数的基本用法:

#include <stdio.h>
int main ()
{
  printf("hello world");
  return 0;
}

上面的代码输出的结果呢就是在屏幕上打印出 ” hello world " 字样。
printf 函数在执行时不会在末尾自动添加换行符,运行结束之后会停留在光标所在位置,所以要手动添加换行符 \n .
tip:
在使用printf 函数的时候必须要引用函数的头文件<stdio.h>要不然则无法使用 printf 函数。

关于 printf 函数 占位符的介绍、

在这里插入图片描述

printf 函数可以指定占位符
所谓的占位符就是指这个位置可以用其它值代入。下面就让我用代码来为大家展示吧~

#include <stdio.h>
 int main ()
 {
  printf("there are %d apples\n",3);
  return 0;
 }

上面的例子中 there are %d apples\n 就是输出文本其中 %d 就是占位符,表示这个位置里的内容可以由其他的数字来代替。占位符的第一个字符都是 % ,第二个字符表示占位符的数据类型,这里的%d 代表着这里需要输入一个整数
常用的占位符除了 %d 还有 %s 代表着需要输入的类型是字符串。
tip :
一个输出文本里可以包含多个占位符

例子如下:

#include <stdio.h>
 int main ()
 {
  printf("%s says it is %d o'clock\n", "lisa",21);
  return 0;
 }

在上面的示例中输入文本是 %s says it is %d o’clock\n 其中就包含了两个占位符 %s 和 %d 。

printf 函数限定宽度

使用printf 函数可以限制占位符最小宽度。

#include <stdio.h>
 int main ()
{
 printf("%5d",123);
 return 0;
 }

在上面示例中 %5d 就限制了占位符的宽度为五位,如果不满足五位就用空格补齐,输出的值默认是右对齐。在对应值的前面添加空格。如果希望改成左对齐,在输出内容后面添加空格,可以在占位符%的后面添加一个 - 号。
对于小数,这个限定符可以限制所有数字的最小显示宽度。

#include <stdio.h>
 int main ()
 {
  printf("%12f\n",123.45);
  return 0;//输出结果为”  123.450000“
 }

上面示例中,%12f 表示浮点数最少要占据12位。由于小数的默认显示精度是小数点的后六位,所以输出结果 " 123.450000 " 的前面会加上两个空格。

总是显示正负号

默认情况下,printf () 不对正数显示 + 号 ,只对负数显示 - 号 。如果想让正数也显示 + 号就在占位符 % 的后面加上 + 号。

限定小数位数

输出小数时,有时候希望限定小数位数,举例子来说如果只希望保持小数点后的两位数字占位符可以写成 %.2f

#include <stdio.h>
 int main ()
 {
  printf("number is %.2f\n",0.5);
  return 0;//输出 number is 0.50
 }

这种写法也可以结合限定宽度占位符使用

#include <stdio.h>
 int main ()
 {
  printf("%6.2f\n",0.5);
  return 0;//输出结果为”  123.450000“
 }

上面示例中,%6.2f 表示输出数字按最小宽度为6,小位数保留两位。

输出部分字符串

%s 占位符用来输出字符串,默认的是全部输出,如果只想输出开头部分,可以用%.[m] s 来指定输出的长度,其中[m] 代表一个数字,表示所需要输出的长度。

#include <stdio.h>
int main ()
{
  printf("%.5s\n","hello world");
  return 0;//输出结果为” hello “
}

上面例子中%.5s 表示只输出字符串前五位数字,所以输出结果为” hello "

好啦关于printf 函数的讲解就到这里啦~ 下面就让我们来学习 scanf 函数是如何应用的吧~
在这里插入图片描述

scanf 函数介绍

当我们有了变量,我们需要给变量输出值就可以使用scanf 函数,如果需要将变量的值输出在屏幕上我们就可以使用 printf 函数。

scanf 函数基本用法

scanf () 函数用于读取用户在键盘上的输入。
程序运行到这个语句时,会停下来,等待用户从键盘输入。
用户输入数据之后,按下回车键,scanf 函数就会处理用户输入数据,将其存入变量中。
它的原型也定义在头文件 <stdio.h> 之中所以在使用之前要记得声明头文件。用法与 printf () 函数相似。

#include <stdio.h>
 int main ()
 {
   int i;
   scanf("%d,&i");
   return 0;
 }

上面的示例中 %d 是占位符 % 是占位符的标志 ,d 表示整数,第二个参数 &i 表示将数据存入变量i 中。
tip:
变量前面必须加上&运算符,指针变量除外,因为 scanf () 函数传递的不是值而是地址,即将变量 i 的地址指向用户输入的值。
scanf 函数 处理占位符时,会自动过滤空白字符 ,包括空格 ,制表符 , 换行符 等。
所以用户 输入的数据之间有一个或多个空格时不影响 scanf() 解读数据 。 另外,用户使用回车健 ,将输入分成几行 , 也不影响函数的解读。
scanf () 函数的用户输入原理是 , 将用户的输入先放入缓存 , 等按下回车键之后 ,按照占位符对缓存进行解读。
解读用户输入时 ,会从上一次解读遗留的第一个字符开始,直到读完缓存 ,或者遇到第一个不符合条件的字符为止。

scanf 函数的返回值

scanf 函数的返回值是一个整数,表示成功读取的变量个数。
如果没有读取任何值,或者匹配失败,则返回 0.如果在成功读取任何数据之前,发生了读取错误或者没有遇到文件的结尾,则返回常量 EOF。
如果想要提前结束输入 则可以按下 CTRL+Z。

赋值忽略符

有时用户的输入可能不符合预定的格式

#include <stdio.h>
 int main ()
{ int year = 0;
  int month = 0;
  int day = 0;
  scanf("%d-%d-%d",&year,&month,&day);
 return 0;
}

上面示例中,如果用户输入 2023-08-05 , 就会正确解读出所输入的年,月,日。问题是用户可能会输入其它格式,比如 2023\08\05,这种情况下 scanf () 函数就会解析失败。

为了避免这种情况, scanf() 函数提供了一个赋值忽略符 * 。 只要把 * 加在任何占位符百分号的后面,该占位符就不会返回值,解析后将被丢弃。

#include <stdio.h>
 int main ()
{ int year = 0;
  int month = 0;
  int day = 0;
  scanf("%d%*c%d%*c%d",&year,&month,&day);
 return 0;
}

好啦~今天的学习就到这里啦 ! 不知道对大家有没有帮助呢 ?
经过前几章的学习不知道大家有没有坚持下来呢~学习之路任重而道远,希望大家可以一直坚持下去哦!
让我们在下一章的学习之中相见吧~

在这里插入图片描述

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值