<分区>
我编写了以下代码,目的是在字符串上使用指针算法来查找和替换目标子字符串。显然,它并不优雅,但不幸的是它也是不正确的——它向字符串中添加了无关的字符。
#include <stdio.h>
#include <string.h>
int main() {
char string[] = "The quick brown fox jumped over the lazy dog.";
char target[] = "brown"
char replacement[] = "ochre";
char segment[80+1];
char pre_segment[80+1];
char post_segment[80+1];
int S = strlen(string), T = strlen(target);
for (int i = 0; i < S; i++) {
strncpy(segment, string + i, T);
if (strcmp(segment, target) == 0) {
>>> strncpy(pre_segment, string, i); <<<
strncpy(post_segment, string + i + T,
S - (i + T));
strcat(pre_segment, replacement);
strcat(pre_segment, post_segment);
printf("%s\n", pre_segment);
}
}
return 0;
}
在标记为 >>>this<<< 的行之后,在替换与 pre_segment 连接之前,已将无关字符添加到替换之前。
有人可以给我关于如何调试的建议吗? (也欢迎提出更好的解决方案的建议,但请尽量明确。另外,我不应该为此使用动态内存分配。)