目录
重点:(4) gets(a); 与 scanf("%s",a); 的别区
(5) puts(a) 与 priintf("%s",a); 的区别
一、前言
在写这篇文章之前,我对这些基础的函数总是持有一种似懂非懂的感觉没有太在意,直到我在刷题中遇到了满屏的烫烫烫烫烫烫烫烫烫烫烫烫趟或者就是输入字符总是不符合题目格式要求,至此我专门看了一些大佬的文章,做出了我得理解。
二、函数 gets()、scanf() 深度解析
(1)头文件
gets() 、scanf() 输入函数的头文件都是 #include <stdio.h>
(2)scanf()函数
scanf()函数是输入函数,可以进行整数、浮点数、字符、整数数组、字符串数组的输入
1. 在整数 int 中用 %d 进行输入 scanf("%d", &x);
2.在浮点数 float 中用 %f 进行输入 scanf("%f",&x);
double中用 %lf 进行输入 scanf("%lf",&x);
3.在字符char中用 %c进行输入scanf("%c",&x);
3.在整型数组中用 %d 进行输入 scanf("%d",&a); 注意:数组名必须带取地址符&
注意:此时&a 传输的是首地址
4.在字符串数组中用 %s 进行输入 scnaf("%s",a); 注意:数组名不能带取地址符&
(3)gets()函数
gets()是输入函数,专门对字符串数组进行输入
gets(a); a 是数组名
重点:(4) gets(a); 与 scanf("%s",a); 的别区
gets(a) 与 scanf("%s",a)相似,但不完全相同。
scanf("%s",a) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理。
gets(a)函数将接收输入的整个字符串直到遇到换行为止。
代码举例:scanf("%s",a);
#include <stdio.h>
#include <string.h>
int main()
{
char a[10] = { 0 };
scanf("%s", a); //1234
printf("%s", a); //1234
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char a[10] = { 0 };
scanf("%s", a); // 1 2 3 4
printf("%s", a); // 1
return 0;
}
代码举例:gets(a);
#include <stdio.h>
#include <string.h>
int main()
{
char a[10] = { 0 };
gets(a); //1234
printf("%s", a); //1234
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char a[10] = { 0 };
gets(a); //1 2 3 4
printf("%s", a); //1 2 3 4
return 0;
}
(5) puts(a) 与 priintf("%s",a); 的区别
puts 和 printf的用法一样,puts()函数的作用与语句“printf("%s\n",a);的作用相同。
注意:puts在输出字符串后会自动输出一个回车符。
三、共勉
以下就是我对输入函数的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对getchar()函数的理解,请持续关注我哦!!!!!!!!