如何快速得到文本文件的行数

zm_stone 2000-03-02 05:45:00
我有个简单的问题:我想得到文本文件的行数,但c语言中没有得到文本文件行数的函数,如果用循环调用fgets得到文本的行数在文本很大的情况速度很慢。有谁知道有什么好方法。
...全文
599 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zm_stone 2000-03-06
  • 打赏
  • 举报
回复
repus,你能说得详细些吗?
用file mapping能提高多少速度?
Grace 2000-03-03
  • 打赏
  • 举报
回复
同意Lin的办法,读文件时一次读入大量数据比多次读入每次读少量数据速度快很多.
SUZJ 2000-03-03
  • 打赏
  • 举报
回复
你可以查找文本文件中的回车,ASCII码为13
repus 2000-03-03
  • 打赏
  • 举报
回复
CreateFileMapping ,MapViewOfFile然后用MapViewOfFile返回的指针去搜索回车。
zm_stone 2000-03-03
  • 打赏
  • 举报
回复
但我的文本文件非常大,有几万行,能读入编辑控件吗?
suzj,你的方法比用fgets快吗?
Lin 2000-03-02
  • 打赏
  • 举报
回复
可以一试:先将文本文件一次读入一多行编辑控件,再用API或向其发送消息,返回编辑控件的行数.
jll 2000-03-02
  • 打赏
  • 举报
回复
好象没有什么好办法。用循环一次读一行内容,然后统计行数。
  岁月如梭,光阴似箭,想不到离上次1.0版推出已有1年多时间^-^。在《源码统计器》推出的这一年内,许多朋友给我来信,指出其中的不足,并有许多很好的建议和鼓励,特别要感谢如下几位:Johnson Jiang、zhangxiao、jp.xie、佟晓艺、徐雷、xwing、司徒达擎、ltzhou、Hunter、birdie。   由于过去的一年多时间内工作很忙,而且我目前从事的已不再是软件开发类的工作,因此一直无暇更新。今年春节假期终于得到几天空闲,能够将自己以往的思路重新整理一下,对《源码统计器》做一些更新工作。由于更新不大,因此只升级为1.1版。 主要更新的地方有: 1、 原版本统计如下代码时出错 /*……*/……/*…… 由于我原先没考虑到同一行内有两个地方注释,并且从该行开始进入注释语句(/*)。还有如下语句也统计错误: /*/ 1 //*/ 可能是对类似于/*/的情况处理不当。如下语句统计也有问题 CString str = "abc\ //de"; 因为未考虑到字符串换行的情况。 另外,1.0版对rc文件统计也不正确。 我对统计算法进行了彻底改写,以上错误均已更正。 2、 增加了"设置"按钮,使用户可以自己设置统计方法。就是当代码和注释语句处于同一行时,作何处理。1.0版本是作为代码行计数,但有网友反映有时需要分开计数。因此新版本增加了这项功能,用户可以根据需要自己设置成: ①只作为代码行处理; ②代码行和注释行各增加一行 ③只作为注释行处理; 按第一种方式和第三种方式统计,代码行+注释行+空白行一定等于总行数,而第二种方式统计代码行+注释行+空白行大于总行数,两者之差就是既有代码又有注释符的行数。《源码统计器》缺省设置为第二种统计方法。 "设置"对话框中用户还可以设置日志文件的路径,这个文件我主要是用来记录统计中可能出现的错误。目前能记录cpp文件中字符串换行但没有用\结尾的问题。 3、 增加了将统计结果保存为Excel文件的功能。 4、 增加了动态图标。 5、 其他还做了一些小改动,不再一一说明。 新软件的界面为: 1.1版的《源码统计器》也如原版本一样,源代码完全开放。若你需要,可来信索取,我的Email是:xiaogi@sohu.com。你也可以到我的个人主页下载:http://xiaogi.nease.net。 软件介绍:   在工作中,我们经常碰到客户要求我们告之所写程序的行数,包括代码行、注释行和空白行等。这一软件就是为这一目的编写的。最先是用于对我自己写的C/C++,VC++程序进行行数统计。它可以准确快速地统计出源代码中的各种行数。后来经过不断改进,增加了对VB, Java, ASP, Perl和Shell等程序的源代码的统计,使得软件的应用范围更加广泛。网络上也有不少类似统计行数的软件,但到目前为止,我发现“源码统计器1.0版”统计速度是最快的,而且相比较发现更加准确,考虑到了源代码中可能出现的许多特殊情况。 软件优点: 1、 准确无误。这当然是任何一款源代码统计工具所必需具备的功能。为此,我自建了一个测试用的cpp文件(test.cpp),在其中我设计了多个遵循c++的注释方式,但又很容易导致统计错误的"陷阱"。虽然有些注释语句看起来有点奇怪,但的确合理并且真实存在。统计该测试文件时即使出现1行的统计误差也是不允许的,否则在统计某个恰好用该种方式注释的程序时误差就可能很大。经测试,“源码统计器1.0版”能准确无误地统计出test.cpp的各种代码行数。 2、 更加快速。由于算法选取和文件处理得当,“源码统计器1.0版”的统计速度相当迅速。 3、 界面友好,易于上手。"源码统计器1.0版"界面说明清楚,相信任何人都能轻松上手。本软件无需安装,解压缩后可直接运行。 4、 功能丰富,智能统计。本软件可以统计多种源码,包括C/C+、VC++、VB、Java、ASP、Perl、Shell和TXT文件。可以将统计结果汇总保存为文本文件或csv文件,其中csv文件可被绝大部分统计软件识别(包括微软Office系列的Excel),方便今后进一步整理统计源码。“源码统计器1.0版”还可以根据用户输入的文件扩展名自动调用相应的统计方法。 5、 源代码公开,方便用户根据自己的需要进行修改,添加对特殊文件的统计。 添加方法概述如下:假设你要添加对扩展名为"*.my"的文件统计。首先,在CountingDlg.h中定义宏: #define TYPE_MY 18 然后在CCountingDlg::OnInitDialog()中添加该类型到m_structExtention结构体: m_structExtention.arrayTy
1.1版更新介绍   岁月如梭,光阴似箭,想不到离上次1.0版推出已有1年多时间^-^。在《源码统计器》推出的这一年内,许多朋友给我来信,指出其中的不足,并有许多很好的建议和鼓励,特别要感谢如下几位:Johnson Jiang、zhangxiao、jp.xie、佟晓艺、徐雷、xwing、司徒达擎、ltzhou、Hunter、birdie。   由于过去的一年多时间内工作很忙,而且我目前从事的已不再是软件开发类的工作,因此一直无暇更新。今年春节假期终于得到几天空闲,能够将自己以往的思路重新整理一下,对《源码统计器》做一些更新工作。由于更新不大,因此只升级为1.1版。 主要更新的地方有: 1、 原版本统计如下代码时出错 /*……*/……/*…… 由于我原先没考虑到同一行内有两个地方注释,并且从该行开始进入注释语句(/*)。还有如下语句也统计错误: /*/ 1 //*/ 可能是对类似于/*/的情况处理不当。如下语句统计也有问题 CString str = ";;;;;;;abc//de";;;;;;;;;;;;;;; 因为未考虑到字符串换行的情况。 另外,1.0版对rc文件统计也不正确。 我对统计算法进行了彻底改写,以上错误均已更正。 2、 增加了";;;;;;;设置";;;;;;;按钮,使用户可以自己设置统计方法。就是当代码和注释语句处于同一行时,作何处理。1.0版本是作为代码行计数,但有网友反映有时需要分开计数。因此新版本增加了这项功能,用户可以根据需要自己设置成: ①只作为代码行处理; ②代码行和注释行各增加一行 ③只作为注释行处理; 按第一种方式和第三种方式统计,代码行+注释行+空白行一定等于总行数,而第二种方式统计代码行+注释行+空白行大于总行数,两者之差就是既有代码又有注释符的行数。《源码统计器》缺省设置为第二种统计方法。 ";;;;;;;设置";;;;;;;对话框中用户还可以设置日志文件的路径,这个文件我主要是用来记录统计中可能出现的错误。目前能记录cpp文件中字符串换行但没有用结尾的问题。 3、 增加了将统计结果保存为Excel文件的功能。 4、 增加了动态图标。 5、 其他还做了一些小改动,不再一一说明。 1.1版的《源码统计器》也如原版本一样,源代码完全开放。若你需要,可来信索取,我的Email是:xiaogi@sohu.com。你也可以到我的个人主页下载:http://xiaogi.nease.net。 软件介绍:   在工作中,我们经常碰到客户要求我们告之所写程序的行数,包括代码行、注释行和空白行等。这一软件就是为这一目的编写的。最先是用于对我自己写的C/C++,VC++程序进行行数统计。它可以准确快速地统计出源代码中的各种行数。后来经过不断改进,增加了对VB, Java, ASP,JSP和SQL等程序的源代码的统计,使得软件的应用范围更加广泛。网络上也有不少类似统计行数的软件,但到目前为止,我发现“源码统计器1.1版”统计速度是最快的,而且相比较发现更加准确,考虑到了源代码中可能出现的许多特殊情况。 软件优点: 1、 准确无误。这当然是任何一款源代码统计工具所必需具备的功能。为此,我自建了一个测试用的cpp文件(test.cpp),在其中我设计了多个遵循c++的注释方式,但又很容易导致统计错误的";;;;;;;陷阱";;;;;;;。虽然有些注释语句看起来有点奇怪,但的确合理并且真实存在。统计该测试文件时即使出现1行的统计误差也是不允许的,否则在统计某个恰好用该种方式注释的程序时误差就可能很大。经测试,“源码统计器1.1版”能准确无误地统计出test.cpp的各种代码行数。 2、 更加快速。由于算法选取和文件处理得当,“源码统计器1.1版”的统计速度相当迅速。 3、 界面友好,易于上手。";;;;;;;源码统计器1.1版";;;;;;;界面说明清楚,相信任何人都能轻松上手。本软件无需安装,解压缩后可直接运行。 4、 功能丰富,智能统计。本软件可以统计多种源码,包括C/C+、VC++、VB、Java、ASP、JSP、SQL和TXT文件。可以将统计结果汇总保存为文本文件或csv文件,其中csv文件可被绝大部分统计软件识别(包括微软Office系列的Excel),方便今后进一步整理统计源码。“源码统计器1.1版”还可以根据用户输入的文件扩展名自动调用相应的统计方法。 5、 源代码公开,方便用户根据自己的需要进行修改,添加对特殊文件的统计。 添加方法概述如下:假设你要添加对扩展名为";;;;;;;*.my";;;;;;;的文件统计。首先,在CountingDlg.h中定义宏: #define TYPE_MY 16 然后在CCountingDlg::OnInitDialog()中添加该类型到m_structExtention结构体: m_structExtention.arrayType.Add(";;;;;;;my";;;;;;;);;;;;;;; m_structExtention.nType[0] = TYPE_MY;;;;;;;; 再在IsSearchingFor(CString strFileName)中添加判断,使得当strFileName为my类型时返回TRUE。 在类CCountingDlg中添加函数GetMyFileLines(),具体统计算法请在该函数内自己实现。 最后在CountThread线程中加入判断,如果文件类型为TYPE_MY,则调用函数GetMyFileLines ( )进行统计。 具体操作可参考源代码相应的处理。 6、 软件所使用的资源绝大部分位于资源文件中,便于用户更改其语言版本以用在其它语言的操作系统上。(这也是本软件下一版本要追加的一个功能:自动识别操作系统语言并载入相应的资源包) 使用方法: ◆ 在“文件名或文件类型”组合框中输入你需要进行统计的文件类型(如:*.cpp;;;;;;;;*.c;;;;;;;;*.h)。扩展名之间用;;;;;;;;,:分隔,;;;;;;;;,:前后有空格亦无妨,软件会自动忽略。你也可以直接输入需要统计的文件名(如:counting.cpp;;;;;;;; setting.c;;;;;;;; resource.h)。同样的,文件名之间也用;;;;;;;;,:分隔。点击下拉框可以选择软件缺省为你提供的几种文件类型,点击右边的按钮可以手动指定需要进行统计的文件(可多选,并且软件自动将选中文件的所在目录放入";;;;;;;搜索文件夹";;;;;;;组合框中)。 ◆ 在“搜索文件夹”组合框中输入你需要进行统计的文件所在的文件夹(如: d:study),点击下拉框可以选择近几次进行统计的文件夹。如果你手动输入的文件夹不在下拉框中,软件在统计开始后自动将该文件夹加入。点击右边的按钮可以选择文件夹。 ◆ 你可以选择统计时是否也需要统计子文件夹中的相关文件。 ◆ 点击";;;;;;;统计";;;;;;;按钮开始,再次点击该按钮停止统计。 ◆ 若你需要保存统计结果,请点击";;;;;;;保存";;;;;;;按钮。你可以选择以文本文件、Excel文件或csv文件三种格式保存。其中csv文件可被几乎所有的统计软件识别,包括微软Office系列的Excel。 ◆ 在列表控件中双击文件名可打开该文件。 ◆ 软件可稳定地运行于MS Windows系列操作系统上。 作者声明:   本软件为自由软件,源代码完全公开。你可以来信索要并不受限制地利用,但务请保留作者的版权信息。若你觉得本软件对你有帮助或你需要将其中部分的代码用到自己的软件中,请给作者来信告知。如果你对本软件有好的建议或bug发现,也请来信告知。本软件将不断更新升级,最新版本请到我的个人主页下载。 我的Email:xiaogi@sohu.com 个人主页:http://xiaogi.nease.net

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧