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