永发信息网

C语言有关指针数组中最后一个输入的回车的问题,getcher()的作用,为什么会这样。

答案:3  悬赏:10  手机版
解决时间 2021-11-13 07:47
C语言有关指针数组中最后一个输入的回车的问题,getcher()的作用,为什么会这样。
最佳答案
getch()和getchar()的效果是不一样的,getchar是从缓冲区获取字符,而getch()是直接从键盘获取,getchar遇到回车会结束,getch键盘一输入就有响应,不等待回车,第一个getch的时候,应该相当于是暂停程序,你键盘输入的第一下会发现实际上没有显示任何东西,而这时候,程序已经响应你的第一次输入并开始往下面跑执行第一轮循环,可以在for循环加个断点调试一下就知道了,这里你第一个行字符数组就会初始化为空,后面第二次开始才能正常执行输入。

直接替换成getchar()就木有问题了。

望楼主采纳。追问不好意思,,打错了,是getchar,,我想问的事,为毛我输入n为4,有他就能输入四个,没有他就在第三个的回车输入后结束。
为什么,,这和数组有什么关系追答跟字符串数组无关,其实是跟scanf有关系,你可以把scanf给去掉,先把n的值写死为4,然后在试一下就会发现可以输入4个了。应该是scanf建立了缓冲区并输入了你要输入的数字,而执行一次gets的时候,直接从改缓冲区读入了一个空串,具体为什么scanf的缓冲区会影响到gets的可以仔细研究一下,不过gets这个函数本身就是不安全的,如果被攻击,一般不建议使用。
全部回答
这个不是防止没看到结果,控制台就退出吗
#include
#include
#include
#define MAX_LEN 10
#define N 150
int main()
{
int i,j,n;
char name[N][MAX_LEN];
char *pStr[N];
char *temp=NULL;
printf("How many countries?\n");
scanf("%d",&n);
printf("Input their names:\n");
for(i=0;i {
scanf("%s",name[i]);
pStr[i]=name[i];
}
for(i=0;i {
for(j=i+1;j {
if(strcmp(pStr[j],pStr[i])<0){
temp=pStr[i];
pStr[i]=pStr[j];
pStr[j]=temp;
}
}
}
printf("Sorted results:\n");
for(i=0;i puts(pStr[i]);
getch();
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
富甲天下5里的玉观音有什么用
兰州二热游泳馆。现在开着没?电话是多少?
均庆村这个地址在什么地方,我要处理点事
益达塑料模具这个地址在什么地方,我要处理点
唱歌为什么,为了火吗
为什么我的QQ软件安装不了
9000元等于多少万元
日暮樵归晚求下联
耳机煲机到底有没有用
围绕学校吉祥物写童话故事范文
1.85毫米乘以一亿等于多少毫米
你常期的冷漠以待翻译成文言文
三,用然字组五个词,分别用在下有的句子里.不
伞裙和包裙配什么外套
土命的人家里放鱼缸可以吗
推荐资讯
我心中的好老师征文演讲比赛700字
浅谈如何上好高中田径室内课
佰草集护肤品在梧州旺城广场有专柜吗?
三国中的许都与许昌是同一个地方吗
大神们,威朗选车身颜色,哪个比较时尚一点
46×7=352为什么错了,说出理由
炒黑米会不会破坏黑米的营养?
地雷蜂有没有毒???
滨湖金茂悦怎么样?好不好?值不值得买?
百花之中,最惹眼的花是什么花,它也叫什么
美医生美容会所地址在哪,我要去那里办事,
我的女友和我吵架还打我 我一直让着她 每次打
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?