求教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)还一样吗? 展开
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)还一样吗? 展开
1个回答
展开全部
直接看代码:
#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循环较简洁,但是要新定义一个数组,有一定的系统开销,读者也可以用其它的方法。
#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循环较简洁,但是要新定义一个数组,有一定的系统开销,读者也可以用其它的方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询