Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
266 views
in Technique[技术] by (71.8m points)

c - Program to replace all substring in a string

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

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

1 Reply

0 votes
by (71.8m points)

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).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...