永发信息网

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

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

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

望楼主采纳。追问不好意思,,打错了,是getchar,,我想问的事,为毛我输入n为4,有他就能输入四个,没有他就在第三个的回车输入后结束。
为什么,,这和数组有什么关系追答跟字符串数组无关,其实是跟scanf有关系,你可以把scanf给去掉,先把n的值写死为4,然后在试一下就会发现可以输入4个了。应该是scanf建立了缓冲区并输入了你要输入的数字,而执行一次gets的时候,直接从改缓冲区读入了一个空串,具体为什么scanf的缓冲区会影响到gets的可以仔细研究一下,不过gets这个函数本身就是不安全的,如果被攻击,一般不建议使用。
全部回答
  • 1楼网友:野味小生
  • 2021-11-12 11:43
这个不是防止没看到结果,控制台就退出吗
  • 2楼网友:污到你湿
  • 2021-11-12 10:25
#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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯