我写了下面的代码,目的是在字符串上使用指针算术来查找和替换目标子字符串。很明显,这不是优雅的,但不幸的是它也是不正确的 - 它给字符串添加了无关的字符。查找和替换子字符串(C语言)
#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;
}
线条为标志像>>>这< < <后,多余的字符已经预先考虑到更换前更换与pre_segment串联。
有人可以给我一些关于如何调试的建议吗? (对于更好的解决方案的建议也是受欢迎的,但请尽量明确说明。另外,我不应该为此使用动态内存分配。)
“如何调试这个”?用同样的方法可以调试大多数程序。使用调试器来执行代码并检查状态。 – kaylum
@kaylum我可以告诉你哪里出错了,我希望有更多的知识能够帮助我理解*为什么*。 – Chris
那你为什么不告诉我们哪里出了问题?这将是有用的信息 - 所以我们不必自己调试,也可以证明你已经完成了。你明确地问“如何调试这个”。 – kaylum