C语言第六天,scanf函数

scanf函数

printf函数将二进制表示的整数、浮点数、字符、字符串等按照转换规范转换成字符,并打印在控制台上(输出)。与之相反,scanf将键盘输入的字符串根据转换规范,转换成二进制表示的整数、浮点数、字符或字符串等(输入)。

#include<stdio.h>
int main()
{
char c;
short s;
int n;
long l;
float f;
double df;
scanf("%hhd %hd %d %ld %f %lf", &c, &s, &n, &l, &f, &df);
printf("%d %d %d %d %f %f\n", c, s, n, l, f, df);
return 0;
}

运行代码后输入1 2 3 4 5.4 7.6,scanf函数将字符串"1 2 3 4 5.6 7.8",根据转换规范,分别转换为各类二进制数据,并存储到变量中。

printf函数将这些变量,按照转换规范,再转换为字符串,输出到控制台,结果为1 2 3 4 5.400000 7.600000

子串"1"对应转换规范"%hhd",将转换为char类型的二进制表示,1字节。

子串"2"对应转换规范"%hd",将转换为short类型的二进制表示,2字节。

子串"3"对应转换规范"%d",将转换为int类型的二进制表示,4字节。

子串"4"对应转换规范"%ld",将转换为long类型的二进制表示,4字节。

子串"5.6"对应转换规范"%f",将转换为float类型的二进制表示,4字节。

子串"7.8"对应转换规范"%lf",将转换为double类型的二进制表示,8字节。

使用规范:1.scanf是一个变参函数。

2. scanf的第一个参数是字符串。

3. scanf的第一个参数内容为匹配字符以及转换规范。

注意:输入时,需要按照第一个字符串的形式进行输入,否则无法得到正确结果。

例:scanf第一个字符串为"%hhd %hd %d %ld %f %lf"。

每个转换规范使用空格分割,那么输入时需要用空格进行分割,形如1 2 3 4 5.6 7.8。若使用别的符号分割,则输入时也使用对应符号分割。

4. scanf的后续参数,是转换完成后,数据的存放位置。

如果scanf将转换后的二进制存储到基本变量当中,请在变量名前加&。如果scanf将字符串存储到字符数组中,字符数组名不用加&。

5.转换规范的写法与数量,需要与后续的参数类型和数量对应。

字符和字符串

1.输入字符:

#include<stdio.h>
int main()
{
char c;
scanf("%c",&c);//转换规范"%c
printf("%d %c\n",c,c);
return 0;
}

输入了字符串"A",接下来,字符串"A"将被转换为char类型的二进制表示(其十进制为65),1个字节。最后,转换后的1个字节的数据被char类型的变量c接收。

当我们用%d打印c时,输出了数值65。而用%c打印时,输出了字符A。

如果要给char类型输入数值,请使用转换规范%hhd。若还是使用转换规范%c。会将第一个字符的ASCII码装入变量。

2.输入字符串:

#include<stdio.h>
int main()
{
char str[10];
scanf("%s",str);
printf("%s",str);
return 0;
}

输入helloworld,输出为helloworld

c语言中没有字符串变量,字符串被存储在字符数组当中。由于这里是将输入的字符串存储到字符数组中,后面的参数str不加&

 
posted @ 2022-09-12 19:51  纯爱暴打ntr  阅读(177)  评论(0)    收藏  举报