04 C语言输入输出

[前言]

        学习C语言的输入输出函数,可以帮助我们进行一些简单的调试。我们可以用输入函数scanf向计算机输入数据,也可以通过输出函数printf打印计算机中存储的数据,以检验之前的数据是否输入成功。

一、printf


        前辈,我看你前面用了好几次printf,能讲解一下这个到底是什么吗?

printf("a = %d\n", a) ;  //打印变量a的值
printf("b = %f\n", b) ;  //打印变量b的值

        好的,那我们本节就来讲解一下C语言的输入和输出方式

        printf是C语言的一种标准输出函数,用于向标准输出设备(通常是屏幕)输出数据。它可以有多个参数,参数之间用","隔开

#include <stdio.h>     //C标准输入输出头文件,有该引用才能使用printf函数
printf("参数0", 参数1, 参数2, ...) ;

        其中参数0用双引号""包围,表示一个字符串,这个字符串将会显示在屏幕上。字符串通常是固定的,不能修改,但是printf可以让字符串的某些部分进行变化,而这些变化的值,取决于后面的参数1,参数2,...

int a ;
printf("a = %d\n", a) ;  //打印变量a的值
             ↑     ↑
          格式输出 变化的值

        上面这行代码,"↑"指向的参数a,将会取代前面"a = %d\n"中的%d,同时内存a中的值也会转换为%d类型的数值,而'\n'是一个转义字符,表示换行,所以这段代码打印的结果是:

        唔~原来如此!前辈,我见你有时候写%d,有时候又写%f,这些都是什么意思啊?

        %d,%f,%p,......这些其实都是printf的输出格式,它用来告诉printf,对应内存中的数据应该以什么样的格式进行输出,我把一些常见的输出格式都总结到了一张表上:

        这样,在想要输出指定格式的数据时,查阅此表就可以了。

二、scanf


        C语言的标准输入函数是scanf,它用于接收用户键盘输入的数据,然后根据内存的地址,把这些数据存入计算机对应的内存中,和printf函数一样,它可以有多个参数,也可以指定输入格式

#include <stdio.h>     //C标准输入输出头文件,有该引用才能使用scanf函数
scanf("参数0", 参数1, 参数2, ...) ;
         ↑      ↑        ↑
  用户输入的数据 内存地址1 内存地址2

        嗯,前辈,我大概知道scanf的参数组成和实现的功能了,能给出具体的操作代码吗?我还是不太明白该怎么用!

        好的,以下代码是通过用户键盘输入的方式来给一个变量赋值,然后我们再用printf函数检验一下是否赋值成功:

#include <stdio.h>

int main()
{
    int a ;                     //向系统申请一段int大小的内存a(定义变量a)
    printf("a = %d\n", a) ;     //打印a赋值之前的值
    printf("请给变量a赋值:") ;   //提示语,提示用户输入数据
    scanf("%d", &a) ;          //把用户输入的数据,存入&a(内存a的地址)
    printf("a = %d\n", a) ;    //打印a赋值之后的值

    return 0 ;
}

        代码在执行到scanf这一行的时候,会阻塞等待用户输入数据,用户在输入完数据后,按下回车键(Enter)告诉scanf,我已输入完毕;等待用户输入数据完毕后,scanf会把这些数据存放到指定的内存地址。

        哦哦!原来scanf是这么用的~我再去敲代码多加练习一下!

三、其他输入输出


        除了上面提到的scanf、printf标准输入输出函数,C语言还有其他不同功能的输入输出函数,我把它们都总结到了一个表格上面:

        前辈,我看到上表中提到了字符字符串,请问这两个有什么区别吗?

        这个问题问的好!字符和字符串的区别总结如下:

        (1)字符是用单引号''表示的,如'a','b','c';而字符串是用双引号""表示的,如"abc"。

        (2)C语言中的单个字符包括所有ASCII字符集中的字符,字符串是由不同的字符排列组合而成的。

        (3)字符串默认是以'\0'(结束符)结尾的,而字符没有这个规定。

        我们可以用以下代码验证字符串默认是以'\0'结尾的:

#include <stdio.h>

int main()
{
    char buf = 'a' ;
    printf("sizeof(buf) = %d\n", sizeof(buf)) ;  //打印单个字符'a',大小为1字节

    printf("sizeof(abc) = %d\n", sizeof("abc")) ; //打印字符串"abc",大小为4字节
                                               //因为以'\0'表示结束,实际上为"abc\0"
    return 0 ;
}

        唔唔,我大概理解字符和字符串的区别了^_^ 前辈,我看你之前说C语言中的单个字符包括所有ASCII字符集中的字符,那么这个ASCII又是什么呢?

        ASCII(American Standard Code for Information Interchange,美国信息交互标准码),几乎涵盖了需要用到的所有字符,且每一个字符都会对应一个数字

        比如说表中的字符'A',对应十进制数65,这一点可以通过代码验证:

#include <stdio.h>

int main()
{
    printf("%d\n", 'A') ;  //打印字符'A',但是以%d(十进制)格式输出

    printf("%c\n", 65) ;   //打印数字65,但是以%c(字符)格式输出

    return 0 ;
}

        这就是C语言的字符,所有的字符种类都被总结到了ASCII表中

        嗷嗷!如果我们想要输出某个特定的字符,就可以去ASCII表中查阅,找到这个字符对应的数字,利用数字来打印这个字符!

        没错!~~~我们来总结一下今天所学的内容:

        (1)C语言标准输入常用scanf标准输出常用printf

        (2)C语言的其他输入函数:getchar(),gets();其他输出函数:putchar(),puts()。

        (3)C语言字符字符串的区别:字符串以'\0'(换行符)结尾。

        好的!我这就去自己敲代码消化消化~

[end]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值