sho*_*lly 11 c string while-loop
我最近开始使用K&R书(第2版)开始学习C,而我只是在思考这个解决方案时遇到麻烦,以便练习1-9,这是:
编写一个程序将其输入复制到其输出,用一个空格替换一个或多个空格的每个字符串.
我在网上找到了以下解决方案,除了putchar上面的分号('');它才有意义.没有它,程序不能正常执行其功能,该分号有什么功能?
#include <stdio.h>
int main(void)
{
int c;
while ((c = getchar()) != EOF) {
if(c == ' ') {
while((c = getchar()) == ' ')
;
putchar(' ');
}
putchar(c);
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
chq*_*lie 17
该声明:
while((c = getchar()) == ' ')
;
Run Code Online (Sandbox Code Playgroud)
缩进不正确.它应该是:
while((c = getchar()) == ' ')
;
Run Code Online (Sandbox Code Playgroud)
这;是一个空语句,相当于一个空块{ }.
这种孤独;有点令人困惑,所以添加评论或其他强调以澄清其真实性质被认为是好的风格:
while ((c = getchar()) == ' ') {
/* nothing */
}
while ((c = getchar()) == ' ')
/* nothing */;
Run Code Online (Sandbox Code Playgroud)
一些大胆的程序员写这个更混乱的形式(避免它):
while((c = getchar()) == ' ');
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢这种等效形式:
while ((c = getchar()) == ' ')
continue;
Run Code Online (Sandbox Code Playgroud)
tem*_*def 12
该声明
while((c = getchar()) == ' ')
;
Run Code Online (Sandbox Code Playgroud)
被解析为
while((c = getchar()) == ' ');
Run Code Online (Sandbox Code Playgroud)
效果与...相同
while((c = getchar()) == ' ') {
/* Do nothing */
}
Run Code Online (Sandbox Code Playgroud)
换句话说,它是一个while循环,它的身体没有效果.检查while循环条件的行为会读取字符并丢弃空格,这就是您要执行的操作.
如果删除分号,则while循环体最终成为循环后的语句,这会导致错误的语句重复.
| 归档时间: |
|
| 查看次数: |
736 次 |
| 最近记录: |