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