下面的程序将会读取文本文件中的每一行数据,并统计该行的字符数目和单词数目;程序最后,会输出总共读取的行数。
该程序构建完成后需要在命令行工具(cmd.exe)中运行,将文件名作为命令行参数传递。
该程序涉及到main()函数传参的问题,请查看:C语言mian()函数详解
- #include <stdio.h>
- int main (int argc, char *argv[]){
- FILE *fp;
- int nchars, nwords, nlines;
- int lastnblank; // 如果上一个字符为空格,那么该变量的值为 0
- char c;
- if(argc!=2){
- printf("Usage: %s filename\n", argv[0]);
- exit(0);
- }
- if((fp=fopen(argv[1],"r"))==NULL){
- perror("fopen");
- exit(0);
- }
- nchars=nwords=nlines=lastnblank=0;
- while((c=getc(fp))!=EOF){
- nchars++;
- if (c=='\n'){
- if (lastnblank)
- nwords++;
- printf("words=%d, characters=%d\n", nwords, nchars);
- nchars=nwords=lastnblank=0;
- nlines++;
- }else{
- if (((c==' ')||(c=='\t'))&(lastnblank))
- nwords++;
- lastnblank=((c!=' ')&&(c!='\t'));
- }
- }
- printf("lines=%d\n", nlines);
- fclose(fp);
- }
在D盘创建一个文件 demo.txt,包含如下的内容:
城东书院
C language for China
http://www.cdsy.xyz/
Welcom to our website !
例如,我构建后的程序在 E:\cDemo\Debug\ 中,那么命令行输入截图如下:
注意:demo.txt 最后必须有一个空行,因为程序是以 '\n' 来判断换行的,如果最后没有空行,最后一行数据是读取不到的。