C语言统计字符个数代码分享

C语言统计字符个数代码分享

概述

统计字符个数是C语言编程中的一项基础操作,本文将分享一份C语言代码,实现统计文件中字符个数的功能。

实现过程

读取文件

首先需要打开文件,并读取其中的内容。在C语言中,可以使用stdlib库函数fopenfclose分别打开和关闭文件,使用stdio库函数fread读取文件中的内容。

FILE *fp;  // 文件指针
fp = fopen("filename.txt", "r");  // 以只读方式打开文件
if (fp == NULL) {
    printf("Cannot open file.\n");  // 打开文件失败时输出错误信息
    exit(1);  // 退出程序
}
char buffer[BUFFER_SIZE];  // 定义缓冲区
size_t count;  // 读取的字节数
count = fread(buffer, sizeof(char), BUFFER_SIZE, fp);  // 读取文件内容
fclose(fp);  // 关闭文件

统计字符个数

读取文件中的内容后,需要遍历缓冲区的每一个字符,并统计每个字符的个数。可以使用for循环遍历字符,使用int类型数组记录每个字符对应的出现次数,数组下标为字符的ASCII码。

int count[256] = {0};  // 初始化字符计数器数组
for (int i = 0; i < count; i++) {
    int index = (int) buffer[i];  // 取字符的ASCII码作为数组下标
    if (index > 0 && index < 256) {
        code_count[index]++;  // 对应字符计数器自增1
    }
}

输出结果

遍历完缓冲区后,可以输出每个字符出现的次数。可以使用for循环遍历计数器数组,并输出每个非零计数器对应的字符及其计数。

for (int i = 0; i < 256; i++) {
    if (count[i] > 0) {
        char c = (char) i;  // 将ASCII码转换为字符
        printf("'%c': %d\n", c, count[i]);  // 输出字符及其计数
    }
}

示例说明

示例一

假设有一个文件example.txt,其内容为:

this is an example of counting character

执行统计字符个数的操作的代码为:

#include <stdio.h>
#include <stdlib.h>

#define BUFFER_SIZE 1024

int main() {
    FILE *fp;  // 文件指针
    fp = fopen("example.txt", "r");  // 以只读方式打开文件
    if (fp == NULL) {
        printf("Cannot open file.\n");  // 打开文件失败时输出错误信息
        exit(1);  // 退出程序
    }
    char buffer[BUFFER_SIZE];  // 定义缓冲区
    size_t count;  // 读取的字节数
    count = fread(buffer, sizeof(char), BUFFER_SIZE, fp);  // 读取文件内容
    fclose(fp);  // 关闭文件

    int code_count[256] = {0};  // 初始化字符计数器数组
    for (int i = 0; i < count; i++) {
        int index = (int) buffer[i];  // 取字符的ASCII码作为数组下标
        if (index > 0 && index < 256) {
            code_count[index]++;  // 对应字符计数器自增1
        }
    }

    for (int i = 0; i < 256; i++) {
        if (code_count[i] > 0) {
            char c = (char) i;  // 将ASCII码转换为字符
            printf("'%c': %d\n", c, code_count[i]);  // 输出字符及其计数
        }
    }

    return 0;
}

输出结果为:

' ': 7
'a': 2
'c': 3
'd': 1
'e': 4
'f': 1
'g': 1
'h': 2
'i': 3
'k': 1
'l': 2
'm': 2
'n': 4
'o': 2
'p': 1
'r': 3
's': 3
't': 4
'u': 1
'x': 1
'y': 1

从结果中可以看出,文件中空格出现了7次,字符'e'出现了4次,其他字符分别出现了1-3次。

示例二

假设有一个文件empty.txt,其内容为空。

执行统计字符个数的操作的代码为:

#include <stdio.h>
#include <stdlib.h>

#define BUFFER_SIZE 1024

int main() {
    FILE *fp;  // 文件指针
    fp = fopen("empty.txt", "r");  // 以只读方式打开文件
    if (fp == NULL) {
        printf("Cannot open file.\n");  // 打开文件失败时输出错误信息
        exit(1);  // 退出程序
    }
    char buffer[BUFFER_SIZE];  // 定义缓冲区
    size_t count;  // 读取的字节数
    count = fread(buffer, sizeof(char), BUFFER_SIZE, fp);  // 读取文件内容
    fclose(fp);  // 关闭文件

    int code_count[256] = {0};  // 初始化字符计数器数组
    for (int i = 0; i < count; i++) {
        int index = (int) buffer[i];  // 取字符的ASCII码作为数组下标
        if (index > 0 && index < 256) {
            code_count[index]++;  // 对应字符计数器自增1
        }
    }

    for (int i = 0; i < 256; i++) {
        if (code_count[i] > 0) {
            char c = (char) i;  // 将ASCII码转换为字符
            printf("'%c': %d\n", c, code_count[i]);  // 输出字符及其计数
        }
    }

    return 0;
}

输出结果为空,即文件中没有任何字符出现。

总结

本文分享了一份C语言代码,实现统计文件中字符个数的功能。通过本文的示例和说明,读者可以了解C语言中实现统计字符个数的基本方法,以及如何打开和读取文件中的内容。同时,读者还可以将代码进行扩展,比如可以统计文件中单词和行数等,以及可以将代码封装成函数,便于其他程序的调用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言统计字符个数代码分享 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • C/C++ Qt 运用JSON解析库的实例代码

    下面将为您详细讲解在C/C++ Qt中运用JSON解析库的实例代码的完整攻略。 一、JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON建立在两种结构上:一个用来表示值的简单原始类型(数字、字符串、布尔值、空值)以及一种集合值的有序列表(数组)和一个包含…

    C 2023年5月23日
    00
  • Windows7开机提示checking file system on c的两种原因分析

    下面是“Windows7开机提示checking file system on c的两种原因分析”的完整攻略。 1. 背景介绍 “checking file system on c”是较为常见的Windows7开机提示之一,意味着系统正在检查C盘文件系统,通常会伴随着进度百分比的显示。检查文件系统是系统自我保护的一种机制,目的是检查磁盘上的文件系统以确保数据…

    C 2023年5月23日
    00
  • C语言中实现协程案例

    下面我将为你详细讲解C语言中实现协程的完整攻略。 什么是协程 协程(Coroutines)又被称为协作式多任务处理(Cooperative multitasking),是一种计算机程序组件,协程意味着函数可以在中途停止执行,稍后再从停止的地方恢复执行。协与同步和异步执行的程序单元不同,协程通常是基于更高级和更具抽象性的概念。协程可以被视为子例程的泛化,因为它…

    C 2023年5月22日
    00
  • C++趣味算法之侦探推理

    C++趣味算法之侦探推理攻略 游戏说明 「侦探推理」是一款经典的数学推理游戏,需要通过推理和判断,找出隐藏在谜题中的答案。而本篇文章将教大家利用C++编程实现这个游戏,并提供完整攻略。 游戏规则 游戏中,有5位嫌疑犯和5个证人,他们在房间内,相互之间发生了一些事情。现在,我们知道有3个嫌疑犯和2个证人的事情发生了,需要利用已知条件推理出真正的罪犯和证人。 五…

    C 2023年5月22日
    00
  • C语言return, exit, abort的区别

    C语言中return, exit, abort都是用来结束程序的函数,但是它们有一些区别。 return return语句是用来返回函数的返回值,并将函数的执行权交给调用者。如果在main函数中使用return语句,则相当于结束程序。return语句的作用范围仅限于函数内部,即return只能在函数中使用。 以下是return的示例代码: #include …

    C 2023年5月23日
    00
  • C++实现简单班级成绩管理系统

    C++实现简单班级成绩管理系统攻略 1. 需求分析 在实现班级成绩管理系统前,首先需要明确实现系统的主要功能,如本系统需要实现的功能有:- 添加学生的基本信息,包括学生姓名和学号;- 添加学生成绩信息,包括数学、语文、英语等科目的成绩;- 对学生成绩进行管理,包括查看某个学生的成绩、某个科目的平均成绩、班级总体平均成绩等。 2. 设计思路 本系统的设计思路为…

    C 2023年5月30日
    00
  • VS2019中CMake项目的简单使用方法

    下面是“VS2019中CMake项目的简单使用方法”的完整攻略: 1. CMake简介 CMake是一个跨平台的编译系统,可以自动生成各种不同构建系统(如Makefile、Visual Studio的项目文件等)。CMake使用CMakeLists.txt文件来描述项目及其构建规则,它是类似Makefile的一种脚本语言,但更易读、易写、易维护。 2. 在V…

    C 2023年5月23日
    00
  • C语言全排列回溯算法介绍

    C语言全排列回溯算法介绍 前言 全排列回溯算法是一种经典的组合问题解法。本文将介绍使用C语言实现全排列回溯算法的完整攻略。全排列指将有限个不同元素按照各种排列方式进行组合,形成所有可能的排列组合。如对于三个元素 {1, 2, 3},所有不同的排列组合为 123、132、213、231、312、321。 算法思路 全排列回溯算法的思路如下: 第一步,选定一个起…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部