C++ scanf("%d\n",&mynum) 会产生什么结果

来源:互联网 发布:2016最火的网络舞蹈 编辑:程序博客网 时间:2024/04/29 12:48

下面是一段简单代码,看似没有问题,但,仔细观察不难发现,代码中存在 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。

0 0
原创粉丝点击