Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

This a program for replacing all substring with a given string in a string..but it is showing segmentation fault..pls help..

char s[1000]="i am a good boy,he  is a good boy";
char rep[100]="good";
char new[100]="bad";
char result[1000];
char *tmp;
int len;
char *k=s;

while(1) 
{
    tmp=strstr(k,rep);
    if(tmp==NULL)
        break;
    len=tmp-k;  
    tmp=tmp+strlen(rep);    
    strncpy(result,k,len);
    strcat(result,new); 
    k=k+len+strlen(rep);        
}
strcat(result,tmp);
puts(result);
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
261 views
Welcome To Ask or Share your Answers For Others

1 Answer

Your code uses strncpy() but does not null-terminate the string, and then uses strcat() to append to the non-terminated string. This is not a good idea.

Your code always copies to (the start of) result on each iteration, throwing away anything copied in the previous iteration. This is not a good idea either.

Your code would also commit the 'clbuttic' mistake of matching and substituting parts of words (so 'goods' — as in 'goods train' — would become 'bads' if the code worked).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...