此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2126
为完成本次作业首先尝试了java,但是因为不会解决绝对路径和相对路径问题,只能统计已经在代码中预设好的路径中的文件的单词出现的频率,所以放弃了java语言。尔后选择了C++语言,但是只能完成部分功能;最后选择使用了C语言来进行完成。
(一)功能一
1.功能
小文件输入。 为表明程序能跑,结果真实而不是迫害老五,请他亲自键盘在控制台下输入命令。
2.重点/难点
我认为首先是文件读取既是难点也是重点:难点:因为最开始选用的是Java语言,都是把路径在程序中预设好,不能做到随意访问,且文件读取直接关系到后面的功能可不可以实现,所以我认为文件读取既是难点也是重点。
其次我觉得难点是计算总的词数时,多次重复的单词的频度记为1,因为这段代码在解决的时候也是想了很久才想到解决办法,所以我认为计算总词是一个难点。
3.重要代码片断
(1)定义单词-频率结构体
typedef struct{ char name[100]//单词 int freq;//频率
}WordFreq;
(2)读取文件
char * readFile(char * path){ FILE * fp; long len; char *buf; fp = fopen(path, "r"); fseek(fp, 0, SEEK_END); len = ftell(fp); //文件长度,作为分配文件长度大小的内存空间 fseek(fp, 0, SEEK_SET); buf = (char *) malloc(sizeof (char)*(len + 1)); // 分配文件长度大小的内存空间 fread(buf, sizeof (char), len, fp); buf[len] = '