我寫了下面的代碼,目的是在字符串上使用指針算術來查找和替換目標子字符串。很明顯,這不是優雅的,但不幸的是它也是不正確的 - 它給字符串添加了無關的字符。查找和替換子字符串(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