我是新手,对一般的编程逻辑也是比较陌生的。为了提高我的技能,我开始阅读这篇优秀的文学作品。我真的觉得我很好地掌握了概念,但这个练习似乎让我猝不及防。我可以编写程序,但我看到的一些示例似乎引入了本书尚未介绍的一些概念,如示例here。inspace似乎提供的功能不仅仅是程序员创建的一个变量。
#include <stdio.h>
int main(void)
{
int c;
int inspace;
inspace = 0;
while((c = getchar()) != EOF)
{
if(c == ' ')
{
if(inspace == 0)
{
inspace = 1;
putchar(c);
}
}
/* We haven't met 'else' yet, so we have to be a little clumsy */
if(c != ' ')
{
inspace = 0;
putchar(c);
}
}
return 0;
}在下一个示例中,pc似乎在计算空格方面做了一些事情,但我不确定是什么。
我设法创建了一个程序来完成这个任务,但它只使用了我创建的变量c,因此我理解它的用途。
发布于 2013-03-19 18:55:40
这段代码的目的是复制文本,如果有多个空格,' '连续打印只打印一个空格。
变量inspace用于跟踪上一次打印的字符是否是空格。
如果inspace为零,则表示打印的字符不是空格。和
如果inspace为one,则表示上次打印的时间间隔。
因此,如果下一次inspace为零,则可以在读取场景时打印场景,如果inspace为1,则找到下一个连续的场景,因此不打印空格。
参见C is current char read。(阅读评论)
if(c == ' ') // currently space read
{
if(inspace == 0) // last time non-space printed, So space can be print
{
inspace = 1; // printing space so switch inspace 1
putchar(c); // print space
}
}下一个if
if(c != ' ') // A char not space read, its to to print unconditionally
{
inspace = 0; // remember that non-scape print
putchar(c);
}发布于 2016-02-23 11:29:51
我花了一段时间,但我想这就是答案。
#include <stdio.h>
main()
{
int c, blank;
blank = 0;
while ((c=getchar()) != EOF){
if (c == ' '){
if (blank == 0){
printf("%c", c);
blank = 1;
}
}
if (c != ' '){
if (blank == 1){
blank = 0;
}
printf("%c", c);
}
}
}发布于 2013-03-19 18:54:27
inspace本质上是一个变量,用于指示您是否处于“刚才看到的空间”状态。在看到空格后进入此状态,当看到非空格时退出此状态。只有在不处于inspace状态时才会打印输入,因此不会打印多个相邻的空格。
我设法创建了一个程序来完成这个任务,但它只使用了我创建的变量c,因此我理解它的用途。在您的程序中,如果输入是"hello world",那么这是它的确切输出吗?您发布的程序将输出"hello world“(将单词之间的多个空格压缩为一个)。
https://stackoverflow.com/questions/15497208
复制相似问题