C 为什么我的函数没有打印任何东西?
练习2-4。编写另一个版本的挤压s1、s2,删除s1中与字符串s2中任何字符匹配的每个字符。这是K&R公司的 有人能告诉我为什么我的代码没有打印任何东西吗?我什么都试过了&不知道如何使用GDB。非常感谢 编辑:好吧,我刚刚错过了一个i++程序,它成功了。你们在说什么?我有一份打印的主报表。。。 包括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
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这是你的问题:为什么我的函数没有打印任何东西?。这就回答了这个问题。学会提问。谢谢大家!堆栈上的新用户;下次我会把我的问题说得更清楚。不过非常感谢!真的很感谢你的帮助