第二次作业WordCount

码云地址:

WordCount作业思路

使用c语言编写四个函数分别实现四个初级功能,通过一行一行的方式将flie.c文件内容读出,从而统计字符、单词和代码行数

程序设计实现过程

代码说明

1.输出函数

/*将统计结果输出到指定文件*/
int output(char*xFilename,char*filename,char*str,int number)
{
	FILE*xp=fopen(xFilename,"w+");
	fprintf(xp,"%s %s:%d\n",filename,str,number);
	fclose(xp);
	return 0;
}
/*复制文件*/
int outputToResult(char*opFilename,char*xFilename)
{
    FILE*xp=fopen(xFilename,"r");
    FILE*op=fopen(opFilename,"a");
    char ch;
	while((ch=fgetc(xp))!=EOF)
    {
        fputc(ch,op);
    }
    fclose(op);
    fclose(xp);
    return 0;
}

2.统计字符

int countC(char*filename)
{
	FILE*fp=fopen(filename,"r");
	char buffer[100];
	int i=0;
	char c=0;
	int bufferLen;
	int charNum=0;
	while(fgets(buffer,100,fp)!=NULL)
	{
		bufferLen=strlen(buffer);
		for(i=0;i<bufferLen;i++)
		{
			c=buffer[i];
			if(c!=' '&&c!='\t'&&c!='\n'&&c!='\r')
			{
				charNum++;
			}
		}
	}
	fclose(fp);
	return charNum;
}

3.统计单词

int countW(char*filename)
{
	FILE*fp=fopen(filename,"r");
	char buffer[100];
	int i=0;
	char c=0;
	int isLastBlank=0;
	int bufferLen;
	int wordNum=0;
	while(fgets(buffer,100,fp)!=NULL)
	{
		bufferLen=strlen(buffer);
		for(i=0;i<bufferLen;i++)
		{
			c=buffer[i];
			if(c!=' '&&c!=','&&c!='\t'&&c!='\n'
      )
			{
				!isLastBlank&&wordNum++;
				isLastBlank=1;
			}
			else if(c!='\n'&&c!='\r')
			{
				isLastBlank=0;
			}
		}
		!isLastBlank&&wordNum++;
		isLastBlank=1;
	}
	fclose(fp);
	return wordNum;
}

4.统计代码行

int countL(char*filename)
{
	FILE*fp=fopen(filename,"r");
	char buffer[100];
	int lineNum=0;
	while(fgets(buffer,100,fp)!=NULL)
	{
		lineNum++;
	}
	fclose(fp);
	return lineNum;
}

测试用例

测试效果


总结

通过本次作业,我学到很多新的东西,包括git的使用和命令行参数的使用。同时也暴露出自己的很多问题,尤其是不熟悉命令操作,在使用git时,多一个两个空格就可能导致出错。

参考文献

https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%88%9D%E6%AC%A1%E8%BF%90%E8%A1%8C-Git-%E5%89%8D%E7%9A%84%E9%85%8D%E7%BD%AE
https://www.cnblogs.com/saolv/p/7793379.html
https://wenku.baidu.com/view/30d9ddc4b7360b4c2f3f6402.html

posted @ 2018-09-30 22:59  落枫过后  阅读(116)  评论(1编辑  收藏  举报