C 为什么我的函数没有打印任何东西?

C 为什么我的函数没有打印任何东西?,c,string,copy,C,String,Copy,练习2-4。编写另一个版本的挤压s1、s2,删除s1中与字符串s2中任何字符匹配的每个字符。这是K&R公司的 有人能告诉我为什么我的代码没有打印任何东西吗?我什么都试过了&不知道如何使用GDB。非常感谢 编辑:好吧,我刚刚错过了一个i++程序,它成功了。你们在说什么?我有一份打印的主报表。。。 包括 void squeeze(char s1[], char s2[]); int main() { char s1[100] = "hello"; char s2[100] = "penci

练习2-4。编写另一个版本的挤压s1、s2,删除s1中与字符串s2中任何字符匹配的每个字符。这是K&R公司的

有人能告诉我为什么我的代码没有打印任何东西吗?我什么都试过了&不知道如何使用GDB。非常感谢

编辑:好吧,我刚刚错过了一个i++程序,它成功了。你们在说什么?我有一份打印的主报表。。。 包括

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;
      }
    }
  }
}

挤压中没有函数调用,特别是没有print语句。您期望得到什么?@Deduplicator:有一个对挤入main的调用,其中有一个print语句,但它被注释掉了。也许可以解释您期望得到什么输出,以及您看到什么输出。为什么没有函数调用。主要有一个。谢谢你们。如果你们不玩拖拉,我会很感激的me@slee0743你有一个无限循环,看我的答案-所以,它永远不会到达main中的printf。main中有一个print语句?我刚刚修复了我的程序。@0743这是你的问题:为什么我的函数没有打印任何东西?。这就回答了这个问题。学会提问。谢谢大家!堆栈上的新用户;下次我会把我的问题说得更清楚。不过非常感谢!真的很感谢你的帮助