gpt4 book ai didi

c - 为什么我的函数没有挤压打印任何内容?

转载 作者:行者123 更新时间:2023-11-30 21:34:35 24 4
gpt4 key购买 nike

练习 2-4。编写 scrape(s1,s2) 的替代版本,删除 s1 中与字符串 s2 中任何字符匹配的每个字符。这是来自 K&R。

有人可以告诉我为什么我的代码没有打印任何内容吗?我已经尝试了一切,但不知道如何使用 GDB。非常感谢!

编辑:好的,我只是缺少一个 i++ 并且它有效。你们在说什么?我在 main 中有一个打印声明... #包括

void squeeze(char s1[], char s2[]);

int main() {
char s1[100] = "hello";
char s2[100] = "pencil";
squeeze(s1, s2);
printf("s1 revised: %s\n", s1);
return 0;
}

void squeeze(char s1[], char s2[]) {
int i, j, k;
i = k = j = 0;

while (s1[i] != '\0') {
for (j = 0; s2[j] != '\0'; j++) {
if (s1[i] == s2[j]) {
k = i;
while (s1[k] != '\0') {
s1[k] = s1[(k + 1)];
//printf("***");
if (s1[k] == '\0') {
break;
}
k++;
}
break;
}
else {
continue;
}
}
}
}

最佳答案

你的循环变量i永远不会增加。

这是你的挤压,我管理得当。更改的两行有注释。

void squeeze(char s1[], char s2[]) {
int i, j, k;
i = k = j = 0;

for ( ; s1[i] != '\0'; i++) { /* INCREMENT i */
for (j = 0; s2[j] != '\0'; j++) {
if (s1[i] == s2[j]) {
k = i;
while (s1[k] != '\0') {
s1[k] = s1[(k + 1)];
/* printf("***"); */
if (s1[k] == '\0') {
break;
}
k++;
}
--i; /* BACK UP */
break;
}
else {
continue;
}
}
}
}

关于c - 为什么我的函数没有挤压打印任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25732217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com