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日

相关文章

  • PHP中常见的密码处理方式和建议总结

    PHP中常见的密码处理方式和建议总结 在PHP中,密码处理是一个重要的安全问题。本文将介绍PHP中常见的密码处理方式和建议总结。 常见的密码处理方式 明文存储 明文存储是最不安全的方式,它直接将用户的密码以明文形式存储在数据库中,容易被黑客猜测和盗取,不建议使用。 MD5加密 MD5是一种常用的哈希算法,可以将字符串转换为长度固定的哈希值。使用MD5加密用户…

    C 2023年5月23日
    00
  • 利用C++如何覆盖或删除指定位置的文件内容

    要在C++中修改或删除文件的特定位置,需要使用文件流对象和相关函数。下面是这个过程的完整攻略: 打开文件流并移动到要修改或删除的位置 使用fstream类创建文件流对象,并使用打开文件的文件名和打开模式作为参数。打开模式中的ios::in和ios::out选项是必需的,因为您既要读取文件内容也要写入文件内容。使用seekp或seekg函数将文件流移动到要修改…

    C 2023年5月23日
    00
  • 使用C++制作GC Server过程详解

    使用C++制作GC Server过程详解 什么是GC Server GC Server指的是游戏客户端服务器,主要用于游戏中客户端与服务器之间的交互和通信。C++是一种高效的编程语言,因此使用C++来制作GC Server也是比较常见的。 制作GC Server的步骤 1. 设计游戏架构 在制作GC Server之前,需要先设计好游戏的架构,包括游戏逻辑、游…

    C 2023年5月23日
    00
  • C程序结构的入门

    我们来详细讲解一下C程序结构的入门。 C程序的基本结构 一个C程序的基本结构包括以下几个部分: // 包含头文件 #include <stdio.h> // 定义main函数 int main() { // 程序主体部分,包括声明变量、打印输出等 printf("Hello, World!\n"); // 返回0结束程序 re…

    C 2023年5月30日
    00
  • c++隐式类型转换存在的问题解析

    c++隐式类型转换存在的问题解析 什么是c++隐式类型转换 在C++中,隐式类型转换(Implicit Type Conversion)指的是在程序中自动进行的类型转换,而不需要程序员手动调用类型转换函数。隐式类型转换是由C++编译器自动完成的。 例如,我们可以将一个int类型的变量赋值给一个double类型的变量,编译器会自动把int类型转换成double…

    C 2023年5月23日
    00
  • 基于C++实现一个简单的音乐系统

    基于C++实现一个简单的音乐系统攻略 1. 确定功能需求 在实现一个简单的音乐系统之前,需要明确该系统的功能需求。可能的需求包括但不限于: 音乐播放 音乐暂停 音乐停止 音乐切换 播放列表管理 音量调节等 2. 确定系统设计方案 给定功能需求以后,需要对系统进行设计,包括但不限于: 系统模块设计 数据处理设计 界面设计 设计系统结构 3. 实现代码 3.1 …

    C 2023年5月23日
    00
  • C语言实现经典24点纸牌益智游戏

    C语言实现经典24点纸牌益智游戏 1. 游戏介绍 24点纸牌游戏是一款运用纸牌进行推理和计算的益智游戏,玩家通过选取牌面数字来进行四则运算,将4张牌计算得到结果24即为胜利。此游戏不仅能训练计算能力和观察能力,也能激发玩家的智力潜力和学习兴趣。 2. 程序设计思路 本程序实现主要采用C语言,主要实现思路如下: 创建一个Card结构体,包含数字和花色属性; 随…

    C 2023年5月23日
    00
  • C语言对栈的实现基本操作

    下面我将详细讲解“C语言对栈的实现基本操作”的完整攻略。 栈的基本概念 栈是一种数据结构,是一种只允许在一端进行插入删除操作的线性表,这一端称为栈顶,另一端称为栈底。遵循后进先出(LIFO)的原则,即最后插入的元素最先弹出。 栈的操作 栈的基本操作包括初始化、入栈、出栈、获取栈顶元素以及判断栈是否为空。下面分别进行详细介绍: 初始化栈 初始化栈即为给栈分配空…

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