重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在Insert函数的str是局部变量,在执行完insert函数的时候就释放了
永善网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联建站于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
依据你的函数修改可如下:
#includestdio.h
#includestring.h
#includestdlib.h
char *Insert(char *s, char *q, int n)
{
char *str=(char *)malloc(50);//----malloc的生存周期使整个程序结束或是你free掉
char *strcp=str;
int i = 0;
for (i=0;*s!='\0';i++)
{
if(i=n-1 *q!='\0')
{
strcp[i] = *q;
q++;
}
else
{
strcp[i] = *s;
s++;
}
}
strcp[i+1]='\0';
return str;
}
int main()
{
int i;
char str[] = "Hello world!";
char strin[] = "big";
char *strcp;
printf("Please input the position you want to insert:\n");
scanf("%d", i);
strcp = Insert(str,strin,i);
puts(strcp);
}
还有几点比如char str = "Hello world!";----str指向的是字符串常量,是固定内存不能添加插入修改等操作,故修改为char str[]="Hello world!"
勉强着用吧,调试已经通过.
#include stdio.h
#include stdlib.h
#include math.h
#include string.h
#define max 100
void main()
{
char str[max]={0};
char strcp[max]={0};
int n=0;
int m;
printf("input string:");
scanf("%s",str);
for(int i=0;str[i]!='\0';i++)
{
m=(int)str[i];
if((m%2)==0)
{
strcp[n]=str[i];
n++;
}
}
printf("%s\n",strcp);
strcpy(str,strcp);
printf("%s\n",str);
}
前面的对,后面的代表的地址是s+i*100*1008sizeof(char);你算算跑哪了。
因为s是个多维数组的数组名,所以直接用s加1的话代表的是从s处的地址加了整个多维数组的长度得到的地址。