C K& R 1.5.4字数统计练习1-9

时间:2013-08-01 15:56:55

标签: c word spaces counting

我想知道为什么下面的代码与下面的代码完全不同。 代码应该做的是删除多个连续的空格并只显示一个空格:所以“它的工作原理”变成“它的工作原理”。第一段代码就像“它的工作原理”一样。

不起作用

#include <stdio.h>

main(){
    int c;
    int lastspace;

    lastspace = 0;
    while((c = getchar()) != EOF){
        if(c != ' ')
            putchar(c);
            lastspace = 0;
        if(c == ' '){
            if(lastspace == 0){
            lastspace = 1;
            putchar(c);
            }
        }
    }
}

作品

#include <stdio.h>

main(){
    int c
    int lastspace;

    lastspace = 0;
    while((c = getchar()) != EOF){
        if(c != ' ')
            putchar(c);
        if(c == ' '){
            if(lastspace != c){
            lastspace = c;
            putchar(c);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:5)

在你的第一个例子中

if(c != ' ')
    putchar(c);
    lastspace = 0;

不会在{}语句之后放置if括号,因此只有有条件执行以下语句。更改缩进和添加大括号表明代码实际上是

if(c != ' ') {
    putchar(c);
}
lastspace = 0;

这就是为什么某些编码标准要求在所有控制语句之后使用{}的原因。