您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言读取文本文件中的每一行数据

时间:01-03来源:作者:点击数:

下面的程序将会读取文本文件中的每一行数据,并统计该行的字符数目和单词数目;程序最后,会输出总共读取的行数。

该程序构建完成后需要在命令行工具(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' 来判断换行的,如果最后没有空行,最后一行数据是读取不到的。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门