大文件读取问题

C++语言 码拜 9年前 (2016-04-09) 1088次浏览
一个由字符和数字组成的大文件,可能多行,可能就一行,找出文件中连续的“9999”有多少个   求方法  多多益善  请高手指点
本人想到了用string中的find  这是在文件分行的前提下  一行一行找。
解决方案

10

使用python来处理吧,或sed

10

仅供参考:

#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char ln[MAXLEN];
FILE *f;
int i,z;
int b,n,L;
int main(int argc,char **argv) {
    if (argc<2) {
        printf("Usage:%s fullpathfilename.ext\nget total blank/non-blank/total linenumbers.\n",argv[0]);
        return 1;
    }
    f=fopen(argv[1],"r");
    if (NULL==f) {
        printf("Can not open file [%s]!\n",argv[1]);
        return 2;
    }
    z=0;
    b=0;
    n=0;
    L=0;
    while (1) {
        if (NULL==fgets(ln,MAXLEN,f)) break;
        L=strlen(ln);
        if ("\n"==ln[L-1]) {
            if (0==z) {
                for (i=0;i<L-1;i++) {
                    if (!(" "==ln[i] || "\t"==ln[i])) break;
                }
                if (i<L-1) z=1;//当前行不是空行
            }
            if (0==z) b++; else n++;
            z=0;
        } else {
            if (0==z) {
                for (i=0;i<L;i++) {
                    if (!(" "==ln[i] || "\t"==ln[i])) break;
                }
                if (i<L) z=1;//当前行不是空行
            }
        }
    }
    fclose(f);
    if (L>0 && "\n"!=ln[L-1]) {
        if (0==z) b++; else n++;//最后一行末尾无"\n"也计算
    }
    printf("File:[%s] total blank/non-blank/total linenumbers is %d/%d/%d\n",argv[1],b,n,b+n);
    return 0;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明大文件读取问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)