位运算—统计文本文件中汉字的个数

声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生。

    C语言进行底层开发时经常会用到位运算,比如操作系统中的各种描述符,不同的位代表着不同的含义,经常需要按位赋值。关于位运算的细节,教材上都有,这里不再重复。这里只是举例来学习位运算的使用。

例:统计一个中英文混合的文本文件“maden.txt”中汉字的个数。

分析:

好的,这是一个比较常见的文本处理问题。下面是一个C++的实现,可以统计英文字母、数字、汉字和中文句号的个数,以及文本的总行数: ```cpp #include <iostream> #include <fstream> #include <cstring> #include <cctype> using namespace std; const int MAX_LINE_LEN = 1024; // 假设每行最多包含1024个字符 int main() { char line[MAX_LINE_LEN]; //存储每行的字符串 int line_count = 0; // 总行数 int char_count = 0; //英文字母和数字的个数 int chinese_count = 0; // 汉字个数 int dot_count = 0; // 中文句号的个数 ifstream fin("article.txt"); // 打开文件 if (!fin) { // 文件打开失败 cerr << "文件打开失败!" << endl; return 1; } while (fin.getline(line, MAX_LINE_LEN)) { // 逐行读取 line_count++; // 总行数加1 int len = strlen(line); // 获取当前行的长度 for (int i = 0; i < len; i++) { // 遍历当前行的每一个字符 if (isalpha(line[i]) || isdigit(line[i])) { // 如果是英文字母或数字 char_count++; } else if ((line[i] & 0xff00) == 0x8100) { // 如果是汉字或中文标点符号 chinese_count++; } else if (line[i] == '。') { // 如果是中文句号 dot_count++; } } } // 输出统计结果 cout << "总行数:" << line_count << endl; cout << "英文字母和数字个数:" << char_count << endl; cout << "汉字个数:" << chinese_count << endl; cout << "中文句号个数:" << dot_count << endl; fin.close(); // 关闭文件 return 0; } ``` 程序中使用了一个字符数组来存储每行的字符串,使用了一个循环来逐个字符地遍历每一行,并根据字符的类型来统计各种字符的个数。需要注意的是,汉字和中文标点符号都占2个字节,因此需要用位运算来判断是否是汉字或中文标点符号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值