下面是一段简单代码,看似没有问题,但,仔细观察不难发现,代码中存在 scanf 函数两次输入数据的问题,即 scanf("%d\n%d",&myfir,&mysec);
int main()
{int myfir,mysec;
scanf("%d\n%d",&myfir,&mysec);
printf("%d\n",mysec);
return;
}
那么可能就这么看也没什么,但是,如果代码是这样的呢
int main()
{int myfir;
scanf("%d\n",&myfir);
printf("%d\n",myfir);
return;
}
结果会是怎样,必须输入两次之后才能使得程序进行下去!
那么这算是为什么,原因在哪里?
原因在于scanf 是流输入函数,输入都存储在输入流中,数据用则从流上取下,未用则放在流上,流上始终有数据,scanf 只能从流上复写原来的初始未被使用的数据。
用换行符或者类似的空白符,如空格、制表符、换页符,scanf 都会跳过空白符去读下一个字符,因此,你必须输入两次。
同理,我们有时候会看见 scanf 有这样的语句:
scanf("please input your number :%d ",&myfir);
我们再输入自己的数据之前要先输入:
please input your number :
才能完成正确的数据录入。
scanf 还有很多相关知识点,这一次只讲换行符,今后遇见再说今后的知识点。
KK,GN。