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