| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 328 人关注过本帖, 1 人收藏
标题:新手求教,一个关于scanf的问题和一个关于realloc函数的问题
只看楼主 加入收藏
monkey11
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-10-29
结帖率:66.67%
收藏(1)
已结贴  问题点数:20 回复次数:3 
新手求教,一个关于scanf的问题和一个关于realloc函数的问题
#include<stdio.h>
#include<stdlib.h>
void main()
{
    int i,a[10];
 printf("shurujigeshu:");
 for(i=0;i<=2;i++)
 scanf("%d",&a[i]);
 getchar();
 i=0;
 while(1)
 {printf("%d",a[i]);getchar();i++;}

}

现在的结果是如果输入1,2,3,敲一个回车输出一个数
但是如果把第一个getchar()注释掉,如果输入1,2,3的话,那么第一次显示的是1和2,再敲回车才显示3
是不是scanf()函数的问题啊??

第二个是realloc函数的问题
如果内存不足用realloc函数的话,那么是直接增加分配内存呢,还是重新另找一块连着的内存分配,并把已有的数据拷贝过来?
换句话说,如果用栈来实现的话,那么base指针的值会变么?
搜索更多相关主题的帖子: include 
2012-11-13 21:52
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
收藏
得分:20 
第一个getchar,它吸收了你的回车,当你输出时,先是a[0],然后getchar,等待你输入,然后再到i++,循环,出现1,2,3。
当你注释后,你输入1,2,3后按了回车,这个回车还存在的,在循环的时候先a[0],因你回车还在缓存里,就直接执行了getchar,不需你再次输入回车,所以才会出现12,再输入回车后才是3.
你可以在输出那里a[i]后加个换行符\n,看看是不是我说那样。
我的理解是这样的,不知道对不对呢!

[ 本帖最后由 yudeyinji198 于 2012-11-13 23:13 编辑 ]
2012-11-13 22:23
monkey11
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-10-29
收藏
得分:0 
回复 2楼 yudeyinji198
谢谢啦
2012-11-16 10:33
hehxz2417692
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-11-16
收藏
得分:0 
把第一个getchar()删除。把第二个getchar()放到printf的前面,不就是你想要的输出了么?
2012-11-17 00:36
快速回复:新手求教,一个关于scanf的问题和一个关于realloc函数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022061 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved