在平时编程过程中,常常会遇到一些莫名其妙的区别。就像下面两张图一样。
这两张图我们只是简单地输入了几个数据,但是结果发现有个输入中间有空格,但有个没有。这主要是 scanf("%s",ch); 和 gets(ch); 之间的区别。
在最开始先列一下我们要讨论的几种类型。
scanf("%d",&xxx); // 从输入缓冲区第一个非空白符读取,读到下一个非数字字符
scanf("%c",&xxx); // 从输入缓冲区读取第一个字符,不管是不是空白符
scanf("%s",xxx); // 从输入缓冲区第一个非空白符读取,读到下一个空白符
gets(xxx); // 从输入缓冲区第一个字符读取,读到换行符为止
我们在谈论这些之前,先初步了解一下输入缓冲区。
先上个链接 缓冲区
在上面的链接中谈到了缓冲区分为几种类型,我们在这里输入的是行缓冲。当输入遇到换行时才进行操作。比如下面这个例子。
#include<stdio.h>
int main()
{
int a[5],i;
for(i=0;i<5;i++){
scanf("%d",&a[i]);<