• world count


    world count c语言编写实现

    功能如下:

    统计文件的字符数、单词数以及总行数,包括:
    每行的字符数和单词数
    文件的总字符数、总单词数以及总行数
    注意: 空白字符(空格和tab缩进)不计入字符总数;
    单词以空格为分隔;
    不考虑一个单词在两行的情况;
    限制每行的字符数不能超过1000。


    代码如下:


    #include <stdio.h>
    #include <string.h> 

    int *getCharNum(char *filename, int *totalNum);
    void main() {
    char filename[30];
    // totalNum[0]: 总行数 totalNum[1]: 总字符数 totalNum[2]: 总单词数
    int totalNum[3] = { 0, 0, 0 };
    printf("请输入文件名: ");
    gets_s(filename);
    if (getCharNum(filename, totalNum)) {
    printf("Total: %d 行数, %d 单词数, %d 字符数\n", totalNum[0], totalNum[2], totalNum[1]);
    }
    else {
    printf("Error!\n");
    }
    system("pause");
    }
    /** * 统计文件的字符数、单词数、行数 *
    * @param filename 文件名
    * @param totalNum 文件统计数据 *
    * @return 成功返回统计数据,否则返回NULL
    **/
    int *getCharNum(char *filename, int *totalNum) {
    FILE *fp; // 指向文件的指针
    char buffer[1003]; //缓冲区,存储读取到的每行的内容
    int bufferLen; // 缓冲区中实际存储的内容的长度
    int i; // 当前读到缓冲区的第i个字符
    char c; // 读取到的字符
    int isLastBlank = 0; // 上个字符是否是空格
    int charNum = 0; // 当前行的字符数
    int wordNum = 0; // 当前行的单词数
    if ((fp = fopen(filename, "rb")) == NULL) {
    perror(filename);
    return NULL;
    }
    printf("行数 单词数 字符数\n"); // 每次读取一行数据,保存到buffer,每行最多只能有1000个字符
    while (fgets(buffer, 1003, fp) != NULL) {
    bufferLen = strlen(buffer); // 遍历缓冲区的内容
    for (i = 0; i<bufferLen; i++) {
    c = buffer[i];
    if (c == ' ' || c == '\t') { // 遇到空格
    !isLastBlank && wordNum++; // 如果上个字符不是空格,那么单词数加1
    isLastBlank = 1;
    }
    else if (c != '\n'&&c != '\r') { // 忽略换行符
    charNum++; // 如果既不是换行符也不是空格,字符数加1
    isLastBlank = 0;
    }
    }
    !isLastBlank && wordNum++; // 如果最后一个字符不是空格,那么单词数加1
    isLastBlank = 1; // 每次换行重置为1
    // 一行结束,计算总字符数、总单词数、总行数
    totalNum[0]++; // 总行数
    totalNum[1] += charNum; // 总字符数
    totalNum[2] += wordNum; // 总单词数
    printf("%-7d%-7d%d\n", totalNum[0], wordNum, charNum);
    // 置零,重新统计下一行
    charNum = 0;
    wordNum = 0;
    }
    return totalNum;
    }

    总结:

    此代码借鉴网上某位博客主的代码 自己稍加改动 此代码运用了c语言常用的数组和特有的指针 函数比较简单易于理解

    好好学习 天天向上 继续努力

  • 相关阅读:
    【机器学习】sklearn之生成三类数据用于聚类,python
    【机器学习】sklearn之生成环形和半环型数据,python
    【机器学习】sklearn之创建数据集,python
    【python】使用plotly画三维立体高逼格图,数据可视化
    【python】使用jieba中的textrank提取文本/文章关键词,超简单!
    【python】使用jieba提取文本关键词,超简单!
    【机器学习】gensim.models.Word2Vec()参数的详细解释,python
    XP系统老电脑如何安装Linux系统
    PHP中派生是什么?
    MySQL中CURD是什么?
  • 原文地址:https://www.cnblogs.com/MaggieW/p/7588212.html
Copyright © 2020-2023  润新知