C - 如何使这个空语句起作用?
C - How do I make this null statement work?
我正在关注《The C Programming Language. 2nd Edition》,已经上到《1.5.2 Character Counting》了。
为使用空语句的字符计数器提供的代码是这样的:
#include <stdio.h>
main() {
double nc;
for(nc = 0; getchar() != EOF; ++nc)
;
printf("%.0f\n", nc);
}
但是程序没有输出输入的字符数:
input
input
而如果我包含大括号并忽略空语句:
#include <stdio.h>
main() {
double nc;
for (nc = 0; getchar() != EOF; ++nc) {
printf("%.0f\n", nc);
}
}
...它提供了正确的输出:
input
0
1
2
3
4
5
input
6
7
8
9
10
11
如何使程序的空语句版本工作?
您的代码中有很多问题,但其中 none 个与空语句有关:
main
类型和参数错误
- 按 ENTER 键不会关闭
stdin
并且函数不会 return EOF。
检查 EOF 和 新行。
int main(void) {
int nc,ch;
for(nc = 0; (ch = getchar()) != EOF && ch != '\n'; ++nc)
;
printf("%d\n", nc);
}
我正在关注《The C Programming Language. 2nd Edition》,已经上到《1.5.2 Character Counting》了。
为使用空语句的字符计数器提供的代码是这样的:
#include <stdio.h>
main() {
double nc;
for(nc = 0; getchar() != EOF; ++nc)
;
printf("%.0f\n", nc);
}
但是程序没有输出输入的字符数:
input
input
而如果我包含大括号并忽略空语句:
#include <stdio.h>
main() {
double nc;
for (nc = 0; getchar() != EOF; ++nc) {
printf("%.0f\n", nc);
}
}
...它提供了正确的输出:
input
0
1
2
3
4
5
input
6
7
8
9
10
11
如何使程序的空语句版本工作?
您的代码中有很多问题,但其中 none 个与空语句有关:
main
类型和参数错误- 按 ENTER 键不会关闭
stdin
并且函数不会 return EOF。
检查 EOF 和 新行。
int main(void) {
int nc,ch;
for(nc = 0; (ch = getchar()) != EOF && ch != '\n'; ++nc)
;
printf("%d\n", nc);
}