wordcount程序中的应用与拓展

设计思路:编程

      关键是思路,首先知道 单词, 行,字符, 他们有什么特色: 一、单词,标准的是遇到空格后,单词数,自动加一。 二、行是以\n结束的, 也就是说, 遇到\n行数加一,固然也视你的操做系统而言。三、字符, 空格是否记在里面? 等因素须要考虑。因此这就要求咱们将文件读入,逐字检测,检测到空格单词数加一,检测到回车行数单词数加一,若是既不是回车也不是空格则说明是字符,字符数加一 编程时发现的问题: 以上思路针对的是正常输入的文本,实际输入时还会出现种种特殊状况。 1.在一行结束时(换行符以前)出现空格,也就是文本后面加一个空格再按回车,这种状况会致使单词数多1。 2.文本结束时没有按下回车,会致使行数和单词数少1。 3.连续出现几个空格,也会致使单词数增多。函数

      在本次试验中我在查资料是发现,由于不一样的平台对文本文件换行的处理不同,Linux以'\n'为换行符,Windows以'\n\r'为换行符,Mac又以'\r\n'为换行符。因此,使用getc()函数处理换行时比较麻烦,因而我便学习网上”大牛“们,创建缓冲区,fgets()函数用于从文件中读取一行或指定个数的字符,其原型为:char * fgets(char *buffer, int size, FILE * stream);学习

      因此在每一行便进行一次结果统计,最后,将结果统计相加。buffer为缓冲区,用来保存读取到的数据。size为要读取的字符的个数。若是该行字符数大于size-1,则读到 size-1 个字符时结束,并在最后补充' \0';若是该行字符数小于等于 size-1,则读取全部字符,并在最后补充 '\0'。即,每次最多读取 size-1 个字符。读取的字符包括换行符。stream为文件指针。spa

     首先是打开文件fopen(打开文件)相关函数open,fclose表头文件#include<stdio.h>定义函数FILE * fopen(const char * path,const char * mode);参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则表明着流形态。
mode有下列几种形态字符串:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则创建该文件
操作系统

    if( (fp=fopen(filename, "rb")) == NULL ){
        perror(filename);
        return NULL;
    }

 

对于perror函数名  功  能: 系统错误信息  用  法: void perror(char *string);
程序例:.net

#include <stdio.h>

int main(void)
{
   FILE *fp;

   fp = fopen("perror.dat", "r");
   if (!fp)
      perror("Unable to open file for reading");
   return 0;
}

       在每一行便进行一次结果统计,最后,将结果统计相加。buffer为缓冲区,用来保存读取到的数据。size为要读取的字符的个数。若是该行字符数大于size-1,则读到 size-1 个字符时结束,并在最后补充' \0';若是该行字符数小于等于 size-1,则读取全部字符,并在最后补充 '\0'设计

    for(i=0; i<len; i++){
            c = buffer[i];
            if( c==' ' || c=='\t'){ 
                !blank && wNum++; 
                blank = 1;
            }else if(c!='\n'&&c!='\r'){  
                cNum++;
                blank = 0;
            }
        }

 

对于不是空格单词数+1指针

        !blank && wNum++;  
  EOF只是为了标识已经读到文件末尾,它并非一个存储在文件中的字节。因此在判断文件是否读完时不能直接判断(fgetc()==EOF)
而是要赋值以后再进行判断
int c;
c = getc(fp);
    while (c != EOF)
    {
        
        printf("%c", c);
        c = fgetc(fp);
    }

 

 

最后输出
程序代码已上传至coding.netcode

相关文章
相关标签/搜索