首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

字符串安插

2013-04-26 
字符串插入一下是我编写的字符串插入程序,不知道是哪里出了问题?该怎么解决#includestdio.h#includestd

字符串插入
一下是我编写的字符串插入程序,不知道是哪里出了问题?该怎么解决
#include<stdio.h>
#include<stdio.h>

char *insert(char *s,char *q,int n)
{
int i=0;
char *str,strcp[50];
str=strcp;
for(i=0;*s!='\0';i++)
{
if(i==n-1)
{
for(;q!='\0';)
{
str[i]=*q;
i++;
q++;
}
}
str[i]=*s;
s++;
}
str[i]='\0';
printf("%s",str);
return str;
}

main()
{
char *strin,*str;
int i;
    str="hello world";
strin="big";
printf("Please input position you want to insert:");
scanf("%d",&i);
    str=insert(str,strin,i);
printf("\n%s",str);
} 字符串插入问题 c语言 指针
[解决办法]
lz的代码问题比较多啊。改动比较大。

// 返回修改后的s,不能返回一个局部数组的地址,注意s的剩余空间要足够插入q指向的字符串
char *insert(char *s,char *q,int n)
{
    char *p = s+n;  // p指向s插入位置的字符
    char *str,strcp[50]={0};  // strcp用来临时保存s在插入位置之后的字符,此处随便写了一个长度,实际应用中应该根据n和s的长度来动态分配这个大小(strlen-n)
    str = strcp;  // 用指针来进行操作
    strcpy(str ,p);  // 将插入位置后边的部分先保存起来

    // 将要插入的字符写入插入位置
    for(;*q!='\0';)
    {
        *p++= *q++;
    }

    // 接着写入原来保存的后半截字符,也可使用strcpy(p ,str);代替这个循环

     for(;*str!='\0';)
     {
         
         *p++=*str++;
     }

    printf("%s\n",s);
    return s;   // 最后返回原串
}


 int _tmain(int argc, _TCHAR* argv[])
{

    char str[20]="hello world";
    char strin[]="big";
    int i;
    printf("Please input position you want to insert:");
    scanf("%d",&i);
    char *p=insert(str,strin,i);
    printf("%s\n",p);

    return 0;
}

热点排行