C语言读取文本文件中的每一行数据
下面的程序将会读取文本文件中的每一行数据,并统计该行的字符数目和单词数目;程序最后,会输出总共读取的行数。
该程序构建完成后需要在命令行工具(cmd.exe)中运行,将文件名作为命令行参数传递。
该程序涉及到main()函数传参的问题,请查看:C语言mian()函数详解
C语言中文网
C language for China
http://see.xidian.edu.cn/cpp/
Welcom to our website !
例如,我构建后的程序在 E:\cDemo\Debug\ 中,那么命令行输入截图如下:
注意:demo.txt 最后必须有一个空行,因为程序是以 '\n' 来判断换行的,如果最后没有空行,最后一行数据是读取不到的。
该程序构建完成后需要在命令行工具(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语言中文网
C language for China
http://see.xidian.edu.cn/cpp/
Welcom to our website !
例如,我构建后的程序在 E:\cDemo\Debug\ 中,那么命令行输入截图如下:
注意:demo.txt 最后必须有一个空行,因为程序是以 '\n' 来判断换行的,如果最后没有空行,最后一行数据是读取不到的。