我是编程新手,我决定从c开始。我正在使用K & R的书,并且有这个练习,它要求编写一个程序,将输入复制到输出,用一个空白替换一个或多个空白。然而,当我编写我的程序(我确信它不正确,但没关系,因为我在这里学习),我想知道我做错了什么。还有一点需要注意的是:当我用3个空格键入我的名字时,它减少到2个,但是当使用两个或一个空格时,没有任何反应。代码下面贴如何用一个空白替换c编程中的多个空白?
#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.当写我的名字时,我的名字没有空格 – Thenoobienoob
给出的答案并不坏,但它们不能帮助你理解你的代码有什么问题。如果你是编程新手,学习跟踪代码很重要。因此,有些问题可以帮助您找到* your *代码中的错误,而不是将其替换为别人的代码:如果您的输入是'The ... noobie ..... noob'[[ =空格]?为每个角色手动查看循环。跟踪空白的价值,问问自己什么时候应该做putchar,以及现在做什么时候。当您在单词2和单词3之间时,会出现什么情况? –