【发布时间】:2025-12-18 10:50:01
【问题描述】:
我是编程新手,我决定从 c 开始。我正在使用 K&R 的书,并且有这个练习,它要求编写一个将输入复制到输出的程序,用一个空格替换一个或多个空格。但是,当我编写程序时(我确信它不正确,但没关系,因为我是来这里学习的)我想知道我做错了什么。另请注意:当我用 3 个空格键入我的名字时,它会减少到两个,但是当使用两个或一个空格时,什么也没有发生。代码贴在下面
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int c; // getchar value
int blanks = 0; // counting the amount of blanks. If more than one then replace with blanks_2
char blanks_2 = ' '; //character value for replacement in case blanks is more than one
printf("Enter your name please\n");
while((c = getchar()) != EOF){
if(c == ' '){
++blanks;
if (blanks >= 1){
putchar(blankos); }
}
if(c >= 'a' && c <= 'z'){
putchar(c);
}
if (c >= 'A' && c <= 'Z'){
putchar(c);
}
}
return 0;
}
【问题讨论】:
-
你的意思是用一个空白替换连续的黑色,对吧?
-
是的。这似乎不起作用@chux。我以前做过类似的事情,但这会使空白回到 0。写我的名字时,我的名字没有空格
-
给出的答案还不错,但它们并不能帮助您了解您的代码出了什么问题。如果您是编程新手,那么学习跟踪您的代码很重要。所以,一些问题可以帮助您找到 您的 代码中的错误,而不是用其他人的代码替换它:如果您的输入是 'The...noobie.....noob' 会发生什么 [ . =空间]?手动遍历每个字符的循环。跟踪空白的值,并问自己什么时候应该做 putchar,现在什么时候做。当您在单词 2 和 3 之间出现时,行为会发生什么?