C语言 在字符串的某个位置插入一个字符 在线等 挺急的

#include<stdio.h>#include<string.h>voidInsert(chara[],charnum,inta_i);voidmain(){inta... #include <stdio.h>
#include <string.h>
void Insert(char a[],char num,int a_i);
void main()
{
int a_i;
char a[50],num;
printf("请输入一个字符串:");
gets(a);
printf("请输入您想插入的一个字符:");
num=getchar();
getchar();
printf("请输入您想插入的位置:");
a_i=getchar();
Insert(a,num,a_i);
printf("插入后的字符串为:%s\n",a);
}
/*函数功能:在字符串的某个位置插入一个字符*/
void Insert(char a[],char num,int a_i)
{
int i;
if((size_t)a_i >= strlen(a))
{
printf("您输入的位置超出字符串长度了!");
}
else
{
for(i=strlen(a);i >= a_i;i--)
{
a[i+1]=a[i];
}
a[i]=num;
}
}

请问为什么无法插入字符,无论输入什么位置,都会说超出字符串长度?
展开
 我来答
听不清啊
高粉答主

2015-11-29 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include <stdio.h>

#include <string.h>

int Insert(char a[],char num,int a_i);

void main()

{

int a_i;

char a[50],num;

printf("请输入一个字符串:");

gets(a);

printf("请输入您想插入的一个字符:");

num=getchar();

getchar();

printf("请输入您想插入的位置:");

fflush(stdin);

scanf("%d",&a_i);

if (Insert(a,num,a_i))

printf("没有插入!\n");

else

printf("插入后的字符串为:%s\n",a);

system("pause");

}

/*函数功能:在字符串的某个位置插入一个字符*/

int Insert(char a[],char num,int a_i)

{

int i;

if(a_i >= strlen(a))

{

printf("您输入的位置超出字符串长度了!"); 

return -1;

}

else

{

for(i=strlen(a);i >= a_i;i--)

{

a[i+1]=a[i];

}

a[i]=num;

return 0;

}

}

追问
printf("请输入您想插入的位置:");
fflush(stdin);
scanf("%d",&a_i);
请问这里为什么不能用a_i=getchar(;)
岁月流金0000
2015-11-29 · 超过23用户采纳过TA的回答
知道答主
回答量:56
采纳率:100%
帮助的人:30.8万
展开全部
因为你a_i输入的是字符,它的ASCII码比较大,转成int就比较大了,你把要比较的两个数用printf打印出来就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式