ファイルをすばやく取得するローの数

977 ワード

ファイルの行数をすばやく取得し、テキストを読み続けることはできません.そうしないと、メモリ消費も時間消費も許容できません.
解決策はLinuxのwcコマンドを呼び出すことです.行数の取得には-lが用いられ、実際には総バイト数-c、最大行の長さ-Lを取得することができ、これらはその後置換することができる.
#include    
#include 

int cover(char *str)
{
    int index = strchr((const char*)str, ' ') - str;
    str[index] = '\0';
    return atoi(str);
}


int getFileAttr(const char *fileName, char C, char *buff)
{
    FILE *fstream=NULL; 
    sprintf(buff, "wc -%c %s", C, fileName);

    if(fstream=popen(buff,"r"))
    {
        memset(buff, 0x00, sizeof(buff));
        if(fgets(buff, sizeof(buff), fstream))
        {
            pclose(fstream);
            return cover(buff);
        }
    }

    if(fstream)
        pclose(fstream);

    return -1;
}

int main(int argc,char*argv[])
{   
    char buff[256] = {0};
    printf("res:%d
", getFileAttr("dic.txt", 'c', buff)); return 0; }