2015-11-11 37 views
-1

這裏我試圖用「嗚嗚」來替換字符串數組中的「你好嗎」一詞。但它在運行時突然退出。請幫助char指針被分配給另一個位置並使用strcpy()的問題?

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; 

回答

2

您的代碼有多個問題。讓我們從更明顯的一個開始:請記住,strcpy添加了字符串終止符。您可能需要使用memcpy代替:

memcpy(j, str2, strlen(str2)); 

若要繼續,分配內存並將其分配給j,然後在循環中,您重新分配j使j點別的地方,而你失去原來的記憶,你已分配導致內存泄漏。另外,in C you should not cast the result of malloc

最後,您的崩潰的可能原因:您嘗試修改字符串文字,並且所有字符串文字是只讀

+0

我剛剛刪除了malloc以避免不必要的混淆。我試過使用memcopy,但以相同的錯誤結束。 – naiveBayes

+0

啊是的! * s []是隻讀文字。我忽略了它。謝謝 – naiveBayes

相關問題