[前言]
学习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]