如何统计一个文件的行数
2007-06-03 12:15
246 查看
static int file_stat_info(char *file, long *size, long *line, long *word, long *long_max)
...{
#define TMP_BUF_SIZE 8192
char buf[TMP_BUF_SIZE];
int buf_size = TMP_BUF_SIZE;
FILE *fp = NULL;
long file_size = 0;
long file_line = 0;
long file_word = 0;
long line_long = 0;
int read_count = 0;
int read_size = 0;
int word_in = 0;
int word_out = 0;
int long_tmp = 0;
int i,j;
if (fp = fopen(file, "rb"))
...{
fseek(
4000
fp, 0, SEEK_END);
file_size = ftell(fp);//size
rewind(fp);
if (file_size > 0)
...{
file_line = 1;//line
read_count = file_size/buf_size;
read_count++;
}
for (i = 0; i < read_count; i++)
...{
read_size = fread(buf, sizeof(char), buf_size, fp);
if (read_size > 0)
...{
for (j = 0; j < read_size; j++)
...{
//line
if (' ' == buf[j]) file_line++;
//word
if (' ' == buf[j] || ' ' == buf[j] || ' ' == buf[j] || ' ' == buf[j])
...{
if (word_in)
...{
file_word++;
word_in = 0;
}
}
else
...{
word_in = 1;
}
//long_max
if (' ' == buf[j] || ' ' == buf[j])
...{
long_tmp = 0;
}
else
...{
long_tmp++;
if (long_tmp > line_long) line_long = long_tmp;
}
}
if (word_in) file_word++;//word
if (long_tmp > line_long) line_long = long_tmp;//long_max
}
}
if (size && file_size >= 0) *size = file_size;
if (line && file_line >= 0) *line = file_line;
if (word && file_word >= 0) *word = file_word;
if (long_max && line_long >= 0) *long_max = line_long;
fclose(fp);
return 0;
}
return -1;
}
相关文章推荐
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- Mac下如何统计一个目录下所有代码文件的总行数
- 统计一个项目的代码行数,只统计cpp文件
- java统计一个文件的字符数,单词数,行数
- 一个用shell写的统计目录下统计文件行数的代码
- C++文件读写操作(三)如何统计文本的行数及如何读取文件某一行内容
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- 如何把一个TXT文本文件按行数分割成多个文本文件
- shell如何统计文本文件行数
- 如何统计一个目录下的文件个数以及代码总行数的命令
- 输入一个文件路径判断是否存在,并统计文件的行数(不用wc命令统计)
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- 如何统计一个文件中某个字符串的个数?
- C++ 一个统计文件夹下所有代码文件行数的小工具
- 刚想到一个统计文件行数的方法
- mysql用一个select 如何一次性统计多张表的行数,分别列出来
- linux find下如何统计一个目录下的文件个数以及代码总行数的命令
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- 统计一个文件的行数