xian云 2016-06-11 03:12 采纳率: 100%
浏览 1254
已采纳

求大神帮忙看看c语言,输入一串字符,然后输入在某个单词之前插入一个单词的代码,调试总是出问题

#include
#include
#include
#define Acharlen 100
#define Bcharlen 20

char * mid(char * thechar,int start,int len)
{
char *my_char;
int i=0;

for(;start<start+len;start++,i++)
{
    *(my_char+i)=thechar[start];
}

return my_char;

}
int insert(char *longchar,char * my_char,unsigned int start)
{
unsigned int i,j=strlen(longchar);
if(strlen(longchar)+strlen(my_char)>Acharlen)
return 0;

    for(i=strlen(longchar);i>=start;i--)
        *(longchar+i+strlen(my_char))=*(longchar+i);

    for(i=0;i<=strlen(my_char);i++)
    {
        *(longchar+start+i)=*(my_char+i);
    }
return 1;

}
void main()
{
char a[Acharlen];
char b[Bcharlen];
char c[Acharlen];
char *my_char;
unsigned int i,k;

printf("please intput many char\n");
gets(a);
printf("please input insert before many char\n");
gets(b);
printf("please input inser char\n");
gets(c);

for(i=0;i<=strlen(a)-strlen(b);i++)
{
    my_char=mid(a,i,strlen(b));
    if(strcmp(my_char,b))
        break;
}

if(i>strlen(a)-strlen(b))
{
    printf("you input error\n");
    exit(0);
}

if(k=insert(a,c,i))
    puts(a);
else
    printf("error\n");

}

  • 写回答

2条回答 默认 最新

  • zhyank 2016-06-11 03:50
    关注

    还有for(i=strlen(longchar);i>=start;i--)
    (longchar+i+strlen(my_char))=(longchar+i);

    for(i=0;i<=strlen(my_char);i++)
    {
        *(longchar+start+i)=*(my_char+i);
    }这两个循环可以改写成一个循环! 从后面反过来插入.
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?