C语言统计字符个数代码分享
概述
统计字符个数是C语言编程中的一项基础操作,本文将分享一份C语言代码,实现统计文件中字符个数的功能。
实现过程
读取文件
首先需要打开文件,并读取其中的内容。在C语言中,可以使用stdlib库函数fopen
和fclose
分别打开和关闭文件,使用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技术站