求教C语言大神! gets()输入一个字符串后,我想接着输入一个字符,这时需要额外加getchar来接受回车符吗

如果是用scanf("%s",str)输入呢?例如:1,gets(str);a=getchar();2,gets(str);getschar();a=getchar();... 如果是用scanf("%s",str)输入呢?例如:
1,gets(str); a=getchar();
2,gets(str); getschar(); a=getchar();
3.scanf("%s",str); a=getchar();
4.scanf("%s",str); getchar(); a=getchar();
1,2,3,4哪个对呢?
可以的话,请解释一下
字符输入getchar()换为scanf("%c",&a)还一样吗?
展开
 我来答
在晴天的雨伞
2016-06-07 · TA获得超过6869个赞
知道大有可为答主
回答量:5761
采纳率:86%
帮助的人:1211万
展开全部
直接看代码:
#include<stdio.h>
#include<string.h>
void main()
{
char str[100],str_new[100],t;
char *p=str;
int at=0;
puts("输入字符串:");
gets(str);
puts("要插入的字符:");
t=getchar();/*.输入的字符被存放在键盘缓冲区中.直到按回车为止(回车字符也放在缓冲区中);其他字符会保留在键盘缓存区中,等待后续getchar调用读取*/
fflush(stdin);//刷输入新缓存区的内容
puts("插入的位置:");
scanf("%d",&at);
if(at>strlen(str))
{ puts("输入长度应该小于字符串长度!");
return;
}
int j=0;
for(int i=0;str[i]!=0;i++)//新的字符串在这个for()生成
{
if(i==at-1)
str_new[j++]=t;
str_new[j++]=str[i];

}
str_new[j]='\0';
puts(str_new);

}
这里使用生成新数组的for循环较简洁,但是要新定义一个数组,有一定的系统开销,读者也可以用其它的方法。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式