實驗項目wordcount
wordcount
1.设计思路
第一步 :主函数参数使用命令行参数,定义一个文件指针fp。
第二步:判断能否用只读的形式打开命令行指针中的文件,并让指针指向打开函数,若不能则输出不能读取文件,否则下一步。
第三步:使用strcmp函数判断命令行指针数组中的执行要求字符串是否为规定字符串-c、-w、-l,若是-c则调用character子函数输出返回的值,若是-w则调用子函数word输出返回的值,若是-l则调用子函数row输出返回的值,否则输出不能读取执行命令。
第四步:关闭文件。
第一步:定义整型函数名character,传递文件指针参数fp(用来计算字符数)。
第二步:定义一个整型计数器count初始值为0。
第三步:利用while循环判断是否为文件末尾,若是末尾则返回count的值,否则下一步。
第四步:如果从文件中读取的一个字符不是空字符则count+1赋给count,否则继续循环。
第一步:定义整型子函数名word,传递文件参数fp(用来计算单词数)。
第二步:定义一个整型的计数器count初始值为0,标志flag初始值为0.
第三步:利用while循环判断是否为文件末尾,若是则返回count的值,否则下一步
第四步:判断从文档中取出的一个字符是否为英文字母,若是则标志flag为1,否则判断标志是否为1,若是则count+1赋给count,并让标志为0,然后继续循环。
第一步:定义整型子函数名row,传递文件参数fp(用来计算行数)。
第二步:定义一个整型的计数器count初始值为0。
第三步:利用while循环判断是否为文文件末尾,若是则返回count的值,否则下一步
第四步:判断从文件中读取的一个字符是否为换行符,若是则count+1赋给count,否则继续循环。
2.实验代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int character(FILE *fp);
int word(FILE *fp);
int row(FILE *fp);
int main(int argc,char *argv[])
{
FILE *fp=NULL;
if((fp=fopen(argv[2],"r"))==NULL)
{
printf("Please enter correct and available file name!\n");
exit(0);
}
if(strcmp(argv[1],"-c")==0)
printf("%d\n",character(fp));
else if(strcmp(argv[1],"-w")==0)
printf("%d\n",word(fp));
else if(strcmp(argv[1],"-l")==0)
printf("%d\n",row(fp));
else
printf("Please enter the available instruction you want!\n");
fclose(fp);
system("pause");
return 0;
}
int character(FILE *fp)
{
int count=0;
while(!feof(fp))
if(fgetc(fp)!=EOF)
count++;
return count;
}
int word(FILE *fp)
{
short int flag=0;
int count=0;
while(!feof(fp))
{
if(fgetc(fp)<='Z'&&fgetc(fp)>='A'||fgetc(fp)<='z'&&fgetc(fp)>='a')
flag=1;
else
{
if(flag)
count++;
flag=0;
}
}
return count;
}
int row(FILE *fp)
{
int count=0;
while(!feof(fp))
if(fgetc(fp)=='\n')
count++;
return count;
}
3.本题调试过程碰到问题及解决办法
本题在编写代码的过程中出现的对知识点的不熟悉不作详细解释。
错误信息1:
错误原因:在输入统计字符数的文件时并没有将运行的文件放在同一个目录下,而我一直输入的只有需要统计的文件名,而在C:\Users\李晓静\
这个目录下并没有wc.c这个文件,所以一直输出找不到。
改正方法:需要统计的文件地址从C:\Users\李晓静\
以下的地址都要输入,我将文件都放在了桌面,输入时要有Desktop\
这个路径,再输入文件名wc.c
。
错误信息2:
错误代码部分如下:
int character(FILE *fp)
{
int count=0;
while(!feof(fp))
count++;
return count;
}
错误原因:while循环中没有读取文件中的字符,一直判断文件末尾是死循环。
改正方法:在while循环中加一句判断从文件中取出的一个字符是否为空字符,然后执行下一语句。
正确信息:
GitHub地址:
https://github.com/MemoriesBook/C-PTA-/blob/master/wordcount.c
评论博客地址:
学习进度和总结
日期 | 代码时间 | 代码行数 | 博客时间 | 博客行数 |
---|---|---|---|---|
3月12日 | 0 | 0 | 0 | 0 |
3月13日 | 0 | 0 | 0 | 0 |
3月14日 | 6 | 3 | 25 | 17 |
3月15日 | 11 | 5 | 0 | 0 |
3月16日 | 0 | 0 | 0 | 0 |
3月17日 | 0 | 0 | 0 | 0 |
3月18日 | 9 | 7 | 19 | 24 |
3月19日 | 17 | 21 | 0 | 0 |
3月20日 | 0 | 0 | 0 | 0 |
3月21日 | 0 | 0 | 0 | 0 |
3月22日 | 12 | 8 | 31 | 40 |
3月23日 | 48 | 19 | 45 | 86 |
3月24日 | 0 | 0 | 0 | 0 |
3月25日 | 0 | 0 | 0 | 0 |
3月26日 | 0 | 0 | 16 | 160 |
3月27日 | 51 | 24 | 72 | 543 |
3月28日 | 19 | 9 | 67 | 342 |
3月29日 | 44 | 34 | 67 | 199 |
3月30日 | 0 | 0 | 0 | 0 |
3月31日 | 0 | 0 | 0 | 0 |
4月1日 | 24 | 17 | 0 | 0 |
4月2日 | 12 | 13 | 50 | 549 |
4月3日 | 30 | 14 | 47 | 45 |
4月4日 | 0 | 0 | 0 | 0 |
4月5日 | 0 | 0 | 0 | 0 |
4月6日 | 0 | 0 | 0 | 0 |
4月7日 | 0 | 0 | 77 | 203 |
4月8日 | 0 | 0 | 0 | 0 |
4月9日 | 0 | 0 | 0 | 0 |
4月9日 | 0 | 0 | 0 | 0 |
4月10日 | 86 | 7 | 23 | 150 |
4月11日 | 15 | 6 | 250 | 20 |
4月12日 | 50 | 6 | 45 | 239 |
4月13日 | 0 | 0 | 0 | 0 |
4月14日 | 42 | 22 | 0 | 0 |
4月15日 | 101 | 0 | 0 | 0 |
4月16日 | 0 | 0 | 0 | 0 |
4月17日 | 0 | 0 | 0 | 0 |
4月18日 | 0 | 0 | 0 | 0 |
4月19日 | 0 | 0 | 0 | 0 |
4月20日 | 0 | 0 | 0 | 0 |
4月21日 | 0 | 0 | 0 | 0 |
4月22日 | 0 | 0 | 0 | 0 |
4月23日 | 0 | 0 | 0 | 0 |
4月24日 | 0 | 0 | 0 | 0 |
4月25日 | 0 | 0 | 0 | 0 |
4月26日 | 52 | 0 | 0 | 0 |
4月27日 | 0 | 0 | 0 | 0 |
4月28日 | 0 | 0 | 0 | 0 |
4月29日 | 0 | 0 | 0 | 0 |
4月30日 | 0 | 0 | 0 | 0 |
5月1日 | 0 | 0 | 0 | 0 |
5月2日 | 0 | 0 | 0 | 0 |
5月3日 | 0 | 0 | 0 | 0 |
5月4日 | 0 | 0 | 0 | 0 |
5月5日 | 0 | 0 | 0 | 0 |
5月6日 | 0 | 0 | 0 | 0 |
5月7日 | 0 | 0 | 0 | 0 |
5月8日 | 0 | 0 | 0 | 0 |
5月9日 | 0 | 0 | 0 | 0 |
5月10日 | 0 | 0 | 0 | 0 |
5月11日 | 59 | 20 | 8 | 0 |
本学期课程即将结束,请总结下你本课程的收获,回顾第0次作业,你是否实现了你的目标?
要想写好代码就必须自己动手敲,光靠听别人的是没什么用的,大多只能知道C语言中有这种函数和语句而已,平时课上看着老师写的一串串代码,课上好像都看懂了,但是课下真正自己写的时候又写不出来了,所以光靠课上听是没用的。至于第0次作业的目标,其中有一点我并没有实行,每周课后做2道课外的C语言题目,这一点我是很惭愧的,其它的我想我都尽可能地实现了。
你对目前的上课和作业方式(上课讲解+PTA+博客)有何意见和建议?
我觉得PTA可以和上课讲解的方式相同,PTA中的题目只有一道题目,这个题目包含了课上学的很多知识点,全部体现在一串代码中,这样也有利于将知识点和代码串联起来,实现C语言的综合利用,博客也是同样的,减少作业量还可以高质量地完成课程任务,题目涉及的知识点越多就越难,要思考的地方就多,对学生的思维能力有一定的锻炼效果吧。
终于我们即将不再是师生。当你结束本课程,你和我就站在同样的位置上,我将不再基于学校授权和知识、经验 (年龄?)上的优势而对你的自由有任何干扰。除发布成绩以外,我最后一次行使教师特权: 请问你有什么要对教师 (我)说的,建议、抱怨、希望……多谢。
我想说你是一个好老师,很负责任,从专业知识方面,虽然我觉得可能没有那么深入,课堂上也没有多余的知识点,主要原因可能是班里大多数学生都听不懂吧,所以只能把时间都放在讲解课本上要求的内容了吧,但是我觉得老师的态度真的是很认真,就算不是对学生负责,那也是对这份教师工作负责,这一点我真心地很敬佩老师,感谢老师带给我的这种精神,我会好好开发的。
實驗項目wordcount的更多相关文章
- 如何在版本控制工具中管理Sencha Architect的項目
根據數次痛苦的經歷結合stack overflow上的解答,發現原來還是可以使用svn.git之類的版本控制工具管理Sencha Architect生成的項目的. 具體的要點如下,假定項目記作{PRO ...
- Bear 實驗室: 什麼是Git flow ? 如何在SourceTree使用Git flow管理開發!
http://www.takobear.tw/12/post/2014/02/bear-git-flow-sourcetreegit-flow.html Bear 實驗室: 什麼是Git ...
- 在項目中快速部署SLF4J+LOGBACK
想了解SLF4J,LOGBACK是什么?可以访问:http://www.slf4j.org/ http://logback.qos.ch/ 本文大部分参考了Cody Burleson<Ho ...
- 「Ionic」創建新項目
1.創建新項目 创建一个名为myApp的还有tabs的项目(ionic start <project-name> <optional-template>) 可选模板为sidem ...
- p2p項目”復活“之想
http://blog.csdn.net/christopherwu/article/details/23976503 原來以為p2p項目就要夭折,墮入絕望無奈的深淵之時,與多位朋友的交流,抬頭看見了 ...
- ionic3 环境配置 + 運行第一個項目
1.首先我們先下載個 nodejs安裝包 地址:https://nodejs.org/en/ 安裝 檢查是否安裝成功,打開命令提示符 輸入 node -v 回車 查看版本 結果: 2.安裝ionic ...
- 樹莓派3B運行.Net Core2.1 Web 項目
安裝.Net Core 運行時和SDK(非必選) 下載地址 安裝 # 安裝運行時 sudo apt-get -y update # Install the packages necessary for ...
- 部署ASP.Net Core 2.1 項目到 IIS
用Asp.net core 2.1 寫了一個小的系統框架,記錄一下部署過程: 1. 首先是安裝 IIS 了,從 控制面板→程序→启用或关闭Windows功能→勾选Internet Informatio ...
- 使用TFS創建團隊項目
使用微軟賬號登錄Team Service,關聯一個TS賬戶,用來存放你所有的項目,可以從瀏覽器中直接訪問,地址類似yourname.visualstudio.com. 詳細鏈接 在TS賬戶主面板中,可 ...
随机推荐
- 制造抽象基类--《C++必知必会》 条款33
抽象类,含有纯虚函数的类,不可以创建对象. 然而,有时我们并不需要某个函数定义为纯虚函数,但是任然希望此类像抽象类一样,不可以创建对象. 方法1:通过确保类中不存在共有构造函数来模拟抽象基类的性质.意 ...
- tcp socket http(复制的)
物理层-- 数据链路层-- 网络层-- IP协议 传输层-- TCP协议 会话层-- 表示层和应用层-- ...
- Ubuntu 添加用户到 sudoer
一.概述 新建用户后,我们可能需要该用户能够使用一些越权的东西.sudo命令能够暂时提升该用户的权限到root,但是前提是要求该用户存在与 sudoer list 中. sudoers 存储在 /et ...
- CCPC-Wannafly Winter Camp Day1 (Div2, onsite)
Replay Dup4: 要是不挂机,再多仔细想想就好了 J确实自闭好久,一直在想正确性,最后数据错了,喵喵喵? 还是要保证充足的休息啊,中间睡了一小会儿,也不知道睡了多久,醒来他们就又过了一道 要发 ...
- 项目中使用protobuf
在互种系统中数据通信或数据交换可以使用protobuf,他比json.xml的数据量要小一些. 另外因为消息要单独写一个.proto文件,来生成各平台的代码,所以对跨平台通信来说也比较友好. 一.使用 ...
- STM32示波器 信号发生器
源: STM32示波器 信号发生器
- i春秋之荒岛求生write-up
i春秋之荒岛求生write-up 第一关 这一关的答案是在题目的最后一句加粗的 躺平等死 和 勇敢战斗 中进行选择,结合前文中提到的 如果你想出去,就必须打败他们 自然得出答案是 勇敢战斗 . 第二关 ...
- 20155201 实验五《Java面向对象程序设计》实验报告
20155201 实验五<Java面向对象程序设计>实验报告 一.实验内容 1. 数据结构应用 2. 结对编程:利用IDEA完成网络编程任务,1人负责客户端,1人负责服务器 3. 密码结对 ...
- 基于ARM、linux的MF RC522射频读卡器
摘要:本设计将ARM.linux的嵌入式技术与RFID技术相结合,对于实现移动支付终端的低功耗.便携式和网络化具有特别的意义.首先是采用MF RC522芯片设计与制作读写器,实现对Mifare卡的读写 ...
- [微信开发] - 使用weixin4j进行二次开发
1. 服务器连接配置OK, 配置文件在classpath:weixin4j.properties中 # weixin4j-spring-demo### 使用weixin4j(岸思版)springboo ...