第1章 导言-05 1.5 符号常量 // 标准库提供的输入/输出模型非常简单。// 无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理。// 标准库提供了一次读/写一个字符
第1章 导言 -05
1.5 符号常量
// 标准库提供的输入/输出模型非常简单。
// 无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理。
// 标准库提供了一次读/写一个字符的函数,其中最简单的是 getchar 和 putchar 两个函数。
// 变量 c 中将包含输入流中的下一个字符。
c = getchar()
// 每次调用 putchar 函数时将打印一个字符。
putchar(c)
1 文件复制
// 借助于 getchar 与 putchar 函数,可以在不了解其他输入/输出知识的情况下编写出数量惊人的有用代码。
# include <stdio.h>
/* 将输入复制到输出:版本1 */
int main()
{
int c;
c = getchar();
while (c !=EOF) {
putchar(c);
c = getchar();
}
return 0;
}
// 如果将为 c 赋值的操作放在 while 循环语句的测试部分中,上述字符复制程序便可以改写成下列形式:
# include <stdio.h>
/* 将输入复制到输出:版本2 */
int main()
{
int c;
while ((c = getchar()) !=EOF) {
putchar(c);
}
return 0;
}
2 字符计数
// 下列程序用于对字符进行计数
# include <stdio.h>
/* 统计输入的字符数:版本1 */
int main()
{
long nc;
nc = 0;
while ( getchar() !=EOF)
++nc;
printf("%ld\n", nc)
return 0;
}
// 引入了一个新的运算符++,其功能是执行加1操作。
++nc;
// 使用 double (双精度浮点数)类型可以处理更大的数字。
# include <stdio.h>
/* 统计输入的字符数:版本2 */
int main()
{
double nc;
for(nc = 0; getchar() != EOF; ++nc)
;
printf("%.0f\n", nc);
return 0;
}
3.行计数
// 接下来的这个程序用于统计输入的行数。
# include <stdio.h>
/* 统计输入的行数 */
int main()
{
int c, n1;
n1 = 0;
while ((c = getchar()) !=EOF)
if (c == '\n')
++n1;
printf("%d\n", n1);
return 0;
}
4.单词计数
// 我们将介绍的第4个实用程序用于统计行数、单词数与字符数。
// 下面这段程序是 UNIX 系统中 wc 程序的骨干部分:
# include <stdio.h>
#define IN 1 /* 在单词内 */
#define OUT 0 /* 在单词外 */
/* 统计输入的行数、单次数与字符数 */
int main()
{
int c, n1, nw, nc, state;
state = OUT;
n1 = nw = nc = 0;
while ((c = getchar()) !=EOF) {
++nc;
if (c == '\n')
++n1;
if (c == ' ' || c == '\n' || c == '\t') {
state = IN;
++nw;
}
}
printf("%d %d %d\n", n1, nw, nc);
return 0;
}
// 将把其中的3个变量 n1、
n1 = nw = nc = 0;
// 如果 c 是空格,或 c 是换行符,或 c 是制表符
if (c == ' ' || c == '\n' || c == '\t')