我試圖編寫一個函數,它將給定字符串s中的所有字符串s1替換爲s2。然而,我不知道爲什麼我的程序停止在該行* p = 0在該替換函數沒有任何錯誤報告? @@調試字符串替換函數C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void replace(char * s, char * s1, char * s2) {
char * p; int l=strlen(s2);
while ((p=strstr(s,s1))) {
*p=0;
p+=l;
strcat(s,s2);
strcat(s,p);
}
}
int main(void) {
char *s=(char *)"cmd=ls+-la&abc=xyz";
replace (s, "+", " ");
printf("%s", s);
return EXIT_SUCCESS;
}
看看「倒楣的畫家算法「關於您使用的'strcat':http://en.wikipedia.org/wiki/Schlemiel_the_Painter%27s_algorithm – 2011-05-31 17:44:17