读书人

字符串安插

发布时间: 2013-04-26 16:27:53 作者: rapoo

字符串插入
一下是我编写的字符串插入程序,不知道是哪里出了问题?该怎么解决
#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;
}

读书人网 >C语言

热点推荐