實驗項目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:
wordcount
错误原因:在输入统计字符数的文件时并没有将运行的文件放在同一个目录下,而我一直输入的只有需要统计的文件名,而在C:\Users\李晓静\这个目录下并没有wc.c这个文件,所以一直输出找不到。
改正方法:需要统计的文件地址从C:\Users\李晓静\以下的地址都要输入,我将文件都放在了桌面,输入时要有Desktop\这个路径,再输入文件名wc.c
错误信息2:
错误代码部分如下:

int character(FILE *fp)
{
    int count=0;
    while(!feof(fp))
    count++;
    return count;
}

wordcount
错误原因:while循环中没有读取文件中的字符,一直判断文件末尾是死循环。
改正方法:在while循环中加一句判断从文件中取出的一个字符是否为空字符,然后执行下一语句。
正确信息:
wordcount

GitHub地址:

https://github.com/MemoriesBook/C-PTA-/blob/master/wordcount.c
GitHub

评论博客地址:

董欣
董雅洁
冯子旋

学习进度和总结

日期代码时间代码行数博客时间博客行数
3月12日0000
3月13日0000
3月14日632517
3月15日11500
3月16日0000
3月17日0000
3月18日971924
3月19日172100
3月20日0000
3月21日0000
3月22日1283140
3月23日48194586
3月24日0000
3月25日0000
3月26日0016160
3月27日512472543
3月28日19967342
3月29日443467199
3月30日0000
3月31日0000
4月1日241700
4月2日121350549
4月3日30144745
4月4日0000
4月5日0000
4月6日0000
4月7日0077203
4月8日0000
4月9日0000
4月9日0000
4月10日86723150
4月11日15625020
4月12日50645239
4月13日0000
4月14日422200
4月15日101000
4月16日0000
4月17日0000
4月18日0000
4月19日0000
4月20日0000
4月21日0000
4月22日0000
4月23日0000
4月24日0000
4月25日0000
4月26日52000
4月27日0000
4月28日0000
4月29日0000
4月30日0000
5月1日0000
5月2日0000
5月3日0000
5月4日0000
5月5日0000
5月6日0000
5月7日0000
5月8日0000
5月9日0000
5月10日0000
5月11日592080

学习进度

本学期课程即将结束,请总结下你本课程的收获,回顾第0次作业,你是否实现了你的目标?

要想写好代码就必须自己动手敲,光靠听别人的是没什么用的,大多只能知道C语言中有这种函数和语句而已,平时课上看着老师写的一串串代码,课上好像都看懂了,但是课下真正自己写的时候又写不出来了,所以光靠课上听是没用的。至于第0次作业的目标,其中有一点我并没有实行,每周课后做2道课外的C语言题目,这一点我是很惭愧的,其它的我想我都尽可能地实现了。

你对目前的上课和作业方式(上课讲解+PTA+博客)有何意见和建议?

我觉得PTA可以和上课讲解的方式相同,PTA中的题目只有一道题目,这个题目包含了课上学的很多知识点,全部体现在一串代码中,这样也有利于将知识点和代码串联起来,实现C语言的综合利用,博客也是同样的,减少作业量还可以高质量地完成课程任务,题目涉及的知识点越多就越难,要思考的地方就多,对学生的思维能力有一定的锻炼效果吧。

终于我们即将不再是师生。当你结束本课程,你和我就站在同样的位置上,我将不再基于学校授权和知识、经验 (年龄?)上的优势而对你的自由有任何干扰。除发布成绩以外,我最后一次行使教师特权: 请问你有什么要对教师 (我)说的,建议、抱怨、希望……多谢。

我想说你是一个好老师,很负责任,从专业知识方面,虽然我觉得可能没有那么深入,课堂上也没有多余的知识点,主要原因可能是班里大多数学生都听不懂吧,所以只能把时间都放在讲解课本上要求的内容了吧,但是我觉得老师的态度真的是很认真,就算不是对学生负责,那也是对这份教师工作负责,这一点我真心地很敬佩老师,感谢老师带给我的这种精神,我会好好开发的。

转载于:https://www.cnblogs.com/lixiaojing/p/8992287.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值