Linux中文I/O处理
要求
输入是个任意中英文结合的字符串,将字符串存入文件,读取时按照单字读取出来。
问题
读取中文文件单个字输出时中文是乱码
解决办法
原因:在Linux中读取中文字符默认采用UTF-8中文存储占用3个字节。
查看文件类型
file <file>
#include<stdio.h>
#include<memory.h>
#include<string.h>
int main()
{
char name[20],ch[4];
FILE *fd=fopen("data.txt","w+");
printf("输入是个字符串:\n");
for(int i=0;i<10;i++)
{
scanf("%s",name);
fputs(name,fd);
}
printf("单个字符输出:\n");
fflush(fd);
rewind(fd);
while(!feof(fd))
{
memset(ch,'\0',sizeof(ch));
ch[0]=fgetc(fd);
if(ch[0]<0)
{
ch[1]=fgetc(fd);
ch[2]=fgetc(fd);
}
printf("%s\n",ch);
}
char line[100];
rewind(fd);
fgets(line,100,fd);
printf("一行字符输出:%s\n",line);
return 0;
}