我试图替换“#34;你好吗?"在字符串数组中' by" woo"。但它在运行时突然退出。请帮忙
char *s[] = {"hi there","how are you","Fine Ok!"};
char str1[4] = "how" ;char str2[4] = "woo";
char *j = NULL; //(char *)malloc(100*sizeof(char));
int i,k; char n[100] = "hi";
//printf("%d",strlen(s));
for(i = 0;i<3;i++ )
{
j = strstr(s[i],str1);
if(j==0)
continue;
else
{
printf("j is %s",j);
printf("j is %s",j+10);
strcpy(j,str2);
printf("j is %s",j);
break;
}
}
printf("%s",s[1]);
return 0;
答案 0 :(得分:2)
您的代码中存在多个问题。让我们从一个更明显的开始:记住strcpy
添加字符串终止符。您可能希望使用memcpy
代替:
memcpy(j, str2, strlen(str2));
要继续,您需要分配内存并将其分配给j
,然后在循环中重新分配到j
,使j
指向其他位置,然后您松开您分配的原始内存导致内存泄漏。另外,in C you should not cast the result of malloc
。
最后,以及崩溃的可能原因:您尝试修改字符串文字,并且所有字符串文字都是只读。