用C语言读取txt文件并统计字符数

使用fgets函数读取并显示总字符数
在源文件目录下读取test.txt文件

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NUM 1024

int main(void){
	char buf[MAX_NUM];			//字符缓冲区
	FILE *fp;            
	int len,total=0;           //每行字符个数和总字数
	if((fp = fopen("test.txt","r")) == NULL){
		perror("the file fail to read");
		getchar();				//暂停显示
		exit (1) ;
		}
	 while(!feof(fp) && !ferror(fp)){	//文件读取结束或出错则退出
	//while(fgets(buf,MAX_NUM,fp) != NULL)
		fgets(buf,MAX_NUM,fp);//每次读取一行或者MAX_NUM个字符
		len = strlen(buf);
		if(buf[len-1] == '\n'){
			buf[len-1] = '\0';  //去掉换行符在输出
			len--;
		}
		if(len == 0) continue;	//消除空白行
		printf("%s %d \n",buf,len);
		total+=len;
	 }
	printf("This txt total number of worlds %d \n",total);
	fclose(fp);				//关闭文件
	getchar();
	return 0;
}

在这里插入图片描述
在这里插入图片描述
可以看到无法正确读取汉字,由于大多数txt文档编辑器采用UTF-8 编码,汉字占3~4个字节,
而我的编译器是VC++ ,汉字采用的编码占用两个字节,所以会造成识别错误。

  • 12
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值