使用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++ ,汉字采用的编码占用两个字节,所以会造成识别错误。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐