统计标准输入中所有的字符总数。
算法如下:
计数器清零;
当读入的字符不是文件结束符
计数器递增;
输出计数器的结果;
示例中,第一行的字符有5个字符,包括一个回车符。
第二行有5个字符,包括一个回车符;
第三行有10个字符,包括一个回车符;
最后是文件结束符(EOF),不计入字符总数中。
总计共20个字符
#include <stdio.h> /* 统计输入的字符数*/ int main(int argc, char *argv[]) { int nc; nc = 0; while (getchar() != EOF) ++nc; printf("%d\n", nc); return 0; }
这道题的运行方式有几种:
1) 你以前最常用的,在C-Free中 F5,编译并运行,你依次输入
然后输入 Ctrl+Z。
Ctrl+Z表示你的输入结束了,也就是文件结束符 EOF (End Of File)
2) 就像给Word文件保存为后缀名为 .doc 文件一样,源程序也可以保存,后缀名为 .c
请在C盘上创建一个目录,名为code,用来保存你今天编写的C语言程序。
这个例子中,文件名建议保存为 nc.c (nc的意思是 the number of characters)。将文件保存到 c:\code
在Windows XP中,选择【开始】->【运行】,在弹出的对话框中输入 cmd,然后按 Enter 键,会出现如下信息:
输入以下命令
cd c:\code 进入目录 c:\code
dir 查看当前目录下的所有文件
看看是否存在 nc.exe 。如果不存在,请在C-Free中执行【构建】命令。
输入
nc.exe (或者 j.exe)
然后再输入
然后输入 Ctrl+Z。
3) 创建一个文本文件,名为 nc.txt ,
这个文件的内容就是
现在在命令行中输入
nc.exe < nc.txt
发生了什么?
nc.exe < nc.txt > nc.out.txt
又发生了什么?
小结:
我们把从键盘的输入称为标准输入 STDIN (Standard IN),printf 语句的输出是标准输出 STDOUT (Standard OUT),也就是显示器。
当你把你的程序提交给【SISO超级评测系统】时,超级系统会敲键盘吗?然后等你的程序运行结束之后,用眼睛看着屏幕,对照手中的标准答案吗?
当然不会了。 那是怎么来做的呢?
【超级系统】将你提交的程序进行编译,得到可执行文件,例如这个程序在Windows系统上就是 nc.exe,然后将事先准备好的数据放在一个文件中,比如 nc.txt,通过输入重定向命令 < ,把nc.txt 中的内容作为标准输入提供给你的程序;并通过输出重定向命令 > ,把原来输出到显示器窗口的内容保存在文件 nc.out.txt
通过比较你的程序输出的 nc.out.txt 和【超级系统】预先准备好的文件,【超级系统】就知道你的程序是否正确了。
Find
Your
Greatness
20
《C语言程序设计》第2版新版, 第17页,字符计数