【发布时间】:2025-12-23 17:05:07
【问题描述】:
我需要删除s1 中所有位于s2 中的字母。
我不明白我的代码有什么问题:
#include <stdio.h>
#include <stdlib.h>
void squeeze(char s1[], char s2[])
{
int i,j;
i=j=0;
for(i; s2[i]!='\0'; i++) {
for (j; s1[j] != '\0'; j++) {
if (s1[j] == s2[i]) {
s1[j] = s1[j + 1];
--j;
}
}
}
}
int main()
{
char w1[] = "abcde";
char w2[] = "fghaj";
squeeze(w1,w2);
puts(w1);
return 0;
}
但输出是:
abcde
我应该修理什么?
【问题讨论】:
-
您是否尝试过在调试器中逐句逐句执行代码?它告诉你什么?
-
我是初学者,所以它什么也没告诉我,而且我以前从未使用过调试器
-
那就把这当成是学习如何使用调试器的最佳时机吧。如果您想进行任何类型的编程,那么能够使用调试器确实是必不可少的。
-
谢谢,我会看到的
-
或者在你弄乱调试器之前尝试在你的算法中添加 printf 语句,这样你就可以得到一个显示算法如何进展的书面记录。这是调试程序的一种更通用的方法,因为调试器接口各不相同。