小怡分享之printf和scanf

本文详细介绍了C语言中的printf和scanf函数,包括基本用法、占位符的使用、输出格式定制(宽度、正负号、小数位数)、字符串处理以及它们的返回值。
摘要由CSDN通过智能技术生成

前言:

           🌈✨有很多小伙伴可能会犯和小怡一样的错误,分不清printf和scanf,为了让我们更好的理解这两个函数,小怡也给大家总结了一下printf和scanf的用法,希望大家能和小怡一起进步!

1. printf

1.1    printf的基本用法

       printf就是把内容输出到屏幕上,f代表格式化(format),表示可以定制文本的输出内容,他的源文件是stdio.h

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

      printf()不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。

      所以为了让光标移到下一行的开头,可以在输出文本的结尾,添加一个换行符\n

 

1.2    占位符 

        printf()参数与占位符是一一对应的关系,如果有n个占位符,printf()的参数就应该有n+1个。如果参数个数少于对应的占位符,printf()可能会输出内存中的任意值。下面是占位符列举:

占位符含义
%a十六进制浮点数,字母输出为小写
%A十六进制浮点数,字母输出为大写
%c字符
%d十进制整数
%e使用科学计数法的浮点数,指数部分的e为小写
%E使用科学计数法的浮点数,指数部分的E为大写
%i整数,基本等同于%d
%f小数,包含float类型和double类型
%g6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e为小写
%G等同于%g,唯一的区别是指数部分的E为大写
%hd

十进制的short int类型

%ho

八进制的short int类型

%hx十六进制的short int类型
%huunsigned short int类型
%ld十进制的long int类型
%lo八进制的long int类型
%lx十六进制的long int类型
%luunsigned long int类型
%lld十进制的long long int类型
%llo八进制的long long int类型
%llx十六进制的long long int类型
%lluunsigned long long int类型
%le科学计数法表示的long double类型浮点数
%lflong double类型浮点数
%n已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
%o八进制整数
%p指针
%s字符串
%u

无符号整数

%x

十六进制整数
%zdsize_t类型
%%

输出百分号%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.3   输出格式 

         printf()可以定制占位符的输出格式

1.3.1   限定宽度

       printf()允许限定占位符的最小宽度。

a2fc27cd6bc94db0a51edf5ea8e9e84f.png

2128302e26854943b95925a34e957320.png

          限定宽度就是限定的最小宽度,默认的右对齐,%12f表示至少占12位,小数会默认保留六位小数,小数点算一位,所以前面有四个空格。

1.3.2    总是显示正负号 

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

ab1f268045e64b9a90ef143fdfb61a2b.png

1.3.3   限制小数位数 

          希望小数点后面只保留两位,占位符可以写成 %.2f 

039b50f8e6bd447087b3da3a0313749b.png

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

        最小宽度和小数位数这两个限定值,都可以用*代替,通过printf()的参数传入 

 7c299e98487447c983d809659b00d00c.png

     %6.2f表示输出字符串的最小宽度为6,小数位数为2 

1.3.4   限定字符串的输出 

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

#include<stdio.h>
int main()
{
    printf("%.5s\n","hello world");
    return 0;
}

          上面示例中,占位符%.5s表示只输出字符串“hello world”的前5个字符“hello” 

1.4  printf 的返回值 

          让我们先来看一下这道题

e10c31bf713e41e4af1133a0216cf6e0.png

1.先执行最里面的printf("%d",43),在屏幕上打印出43;

2.然后执行中间的printf,相当于打印第一个printf的返回值“4”,“3”有两个字符,所以返回值是2;

3.同理最外面的printf,即打印第二步的“2”返回值,一个字符,所以返回值为1.

 effe1a354fa2421b87ee7bd217edc184.png

所以最后的执行结果是4321,大家做出来了吗 

 

2.scanf 

2.1  scanf的基本用法 

      scanf()函数用于读取用户的键盘输入,程序运行到这个语句时,会停下来,等待用户从键盘输入。用户输入数据,按下回车键后,scanf()就会处理用户的输入,将其存入变量。

     它的原型定义在头文件stdio.h

     scanf()的语法跟  printf()类似 。

scanf("%d",&i);

         注:1.scanf()必须提前知道用户输入的数据类型,才能处理数据;

                2.变量前必须加上&运算符(指针变量除外),因为scanf()传递的不是值,而是地址,即将变量i的地址指向用户输入的值。

scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符等。

2.2   scanf的返回值 

       scanf()的返回值是一个整数,表示成功读取的变量个数。如果没有读取任何项,或者匹配失败,则返回0。如果在成功读取任何数据之前,发生了读取错误或者读取到文件结尾,则返回常量EOF,表示-1

 

           🌈✨这次的分享到这里就结束啦,小怡和大家一起学习,一起进步,“倘若穷途末路,那便势如破竹”,我们要努力学习,才能去到自己所向往的星辰大海!

 

 

 

 

 

  • 37
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值