博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
word count
阅读量:4457 次
发布时间:2019-06-08

本文共 1791 字,大约阅读时间需要 5 分钟。

需求分析:

1.通过输入文件名,实现文件内容读取

2.统计文件内容字符数、行数、空行数、每行字符数、单词查找

如何实现:

1.文件部分

在大一上c语言时,简单的学了学文件,于我而言,不是很常用。于是百度了下文件读取,感觉调用库函数,棒棒的!

fseek(fp, 0L, SEEK_END); //把指针移动到文件的结尾 ,获取文件长度    int len = ftell(fp); //获取文件长度    pBuf = new char[len + 1]; //定义数组长度    rewind(fp); //把指针移动到文件开头 因为我们一开始把指针移动到结尾,如果不移动回来 会出错    fread(pBuf, 1, len, fp); //读文件    pBuf[len] = 0; //把读到的文件最后一位 写为0 要不然系统会一直寻找到0后才结束

 

把文件读到数组中可以基本解决,若读到文件尾,文件指针需要前移的问题,不过我还是比较喜欢用指针,代码中rewind(fp);就可以移动文件指针

在每次读文件前,粘进去,特别好。

2.行数、空行数

这就需要回车标志“\n”了,(ch = getc(fp)) != '\n',经过判断sum++,行数就可以正确输出,还有空行,那就要判断整行字符除了"\n",其他字符都不需要有了呗,也就是说当整行字符为0时,就是空行了。为了方便查看字符个数,我添加了每行有多少字符的功能,要注意字符数要注意剪掉前几行的字符数。

for (; num<=len;)    {        if ((ch = getc(fp)) != '\n')        {            cout << ch;            num++;        }        else        {            cout << "\n";            sum++;            cout <<"第"<< sum << "行" << "一共有" <
<< "个字符" << "\n"; if (num - 1 - front == 0) empty++; front = num; } }

 

3.单词查找:

以我对单词的理解,由字母组成,那就可以通过ASCII码来表示,其范围为(ch>='A'&&ch<='Z') || (ch >= 'a' && ch <= 'z')。将其存在数组中,记录长度,在数组末尾加“\0”,便于查找。若想实现单词出现在哪一行,在比较成功后,count++就可以了。

while ((ch = getc(fp)) != EOF)    {  //EOF 表示文件结束        if (ch  == '\n')            line++;        if ((ch>='A'&&ch<='Z') || (ch >= 'a' && ch <= 'z'))        {            temp[m] = ch;            m++;        }        else        {            temp[m] = '\0';            if ((strcmp(find, temp)) == 0)            {                count++;                if(flag==0)                    cout << "出现在第" << line ;                else                    cout << "、" << line ;                flag = 1;            }            m = 0;        }

总的来说,这个程序不是太难,但要考虑的东西很多,再出现问题的时候,耐下心来,认真调试一下,就会找到出错的地方。

 

转载于:https://www.cnblogs.com/wxl530/p/5308976.html

你可能感兴趣的文章
(转)2018移动端网页界面尺寸参考
查看>>
图论—图的储存
查看>>
深入理解计算机系统(4.1)---X86的孪生兄弟,Y86指令体系结构
查看>>
EasyNVR无插件直播服务器软件接口调用返回“Unauthorized”最简单的处理方式
查看>>
jQuery Ajax File Upload(附源码)
查看>>
mysql-优化班学习-2-20170510
查看>>
spring配置
查看>>
POSt 提交参数 实体 和字符串
查看>>
Linux网络故障排查
查看>>
零崎的朋友很多Ⅰ(100)[完全背包]
查看>>
解决ubuntu下rar解压缩乱码
查看>>
hibernate处理null 时提示:Property path [...] does notreference a collection
查看>>
SpringMVC3.2+JPA使用注解的方式环境搭建
查看>>
用JS获取Html中所有图片文件流然后替换原有链接
查看>>
lua与C++的绑定
查看>>
java reflect反射调用方法invoke
查看>>
FUSE文件系统
查看>>
MySQL- 字符集的设置
查看>>
CTSC2014 && 洛谷P4503 企鹅QQ
查看>>
(转)android常见问题之jni读取assets资源文件(附源码)
查看>>