用c语言做出txt文件里的某一个汉字出现的次数
比如你的我的中“的”在此txt文件中出现的次数是多少你是我是的"是"在此txt中出现的次数是多少...
比如 你的我的中“的” 在此txt文件中出现的次数是多少 你是我是的 "是"在此txt中出现的次数是多少
展开
1个回答
展开全部
如果文件不大的话可以一次性读取进缓冲区中
然后使用strstr函数进行循环测试某个汉字是否在该缓冲区中
每匹配到一次便变量增加一,然后将返回的指针再加1接着再进行匹配
直到匹配结果为NULL或者缓冲区到尾部
比如在一个文件中查找汉这个汉字出现的字数我们可以
while((p=strstr(buf,"汉")) != NULL)
{
++count;
buf=p+1;
}
如果文件比较大的话同样也可以使用这种方法
只不过多了一层循环用来读取文件
不过由于中文字符编码的问题,所以利用循环读取文件的话则需要根据文本文件所使用的字符编码不同对文字进行判断
否则可能会出现乱码而导致统计不准确
除了这种方法外也可以使用一些数据结构来完成
比如散列表的形式
通过将读取的汉字进行散列
如果散列到同一位置时则进行比较该位置中所有汉字是否与要查询的汉字是否相同(散列有冲突时)
如果相同则进行统计
然后使用strstr函数进行循环测试某个汉字是否在该缓冲区中
每匹配到一次便变量增加一,然后将返回的指针再加1接着再进行匹配
直到匹配结果为NULL或者缓冲区到尾部
比如在一个文件中查找汉这个汉字出现的字数我们可以
while((p=strstr(buf,"汉")) != NULL)
{
++count;
buf=p+1;
}
如果文件比较大的话同样也可以使用这种方法
只不过多了一层循环用来读取文件
不过由于中文字符编码的问题,所以利用循环读取文件的话则需要根据文本文件所使用的字符编码不同对文字进行判断
否则可能会出现乱码而导致统计不准确
除了这种方法外也可以使用一些数据结构来完成
比如散列表的形式
通过将读取的汉字进行散列
如果散列到同一位置时则进行比较该位置中所有汉字是否与要查询的汉字是否相同(散列有冲突时)
如果相同则进行统计
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询