关于文字写入txt文档时乱码的问题
代码如下:#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
int word=0;// word 统计多少英语字符
char *creatEnglishArray()//创建字符数组将英文内容写入字符数组中
{
FILE*fp;
if((fp=fopen("a.txt","r+"))==NULL)
{
printf("Can't open the file\n");
exit(0);
}
int sum=0,i=0;//sum统计共有多少个字符,包含空格等字符
// int word=0;// word 统计多少英语字符
while(fgetc(fp)!=EOF)
sum++;
char *array=new char[sum+1];//多创建一个字符空间来存储“\0”,以表示结尾
fp=fopen("a.txt","r+");
while(!feof(fp))
{
char p =fgetc(fp);
if(( p>='a' && p <= 'z')||(p >='A' && p <= 'Z'))
{
array[i]=p;
i++;
word++;
}
}
array[word]='\0';
return array;//返回包含文件所有内容的数组
}
void English()
{ FILE*fp;
if((fp=fopen("english.txt","w"))==NULL)
{
printf("Can't open the file\n");
exit(0);
}
char *english = creatEnglishArray();
for(int i=0;i<word+1;i++)
{
fprintf(fp,"%c ",*english+i);
}
fclose(fp);
}
int Cnum=0;
char *creatChineseArray()
{
FILE*fp;
if((fp=fopen("a.txt","r+"))==NULL)
{
printf("Can't open the file\n");
exit(0);
}
int sum=0,i=0;//sum统计共有多少个字符,包含空格等字符
// int word=0;// word 统计多少英语字符
while(fgetc(fp)!=EOF)
sum++;
char *array=new char[sum+1];//多创建一个字符空间来存储“\0”,以表示结尾
fp=fopen("a.txt","r+");
while(!feof(fp))
{
char p =fgetc(fp);
if(p==' '||p==','||p=='.'||p=='\"'||p==':'||p=='!'||p=='\'')
{
continue;
}
if( p<'a' || p >'z')
{
array[i]=p;
i++;
word++;
Cnum++;
}
}
array[word]='\0';
return array;//返回包含文件所有内容的数组
}
void Chinese()
{
FILE*fp;
if((fp=fopen("chinese.txt","wb"))==NULL)
{
printf("Can't open the file\n");
exit(1);
}
char *chinese = creatChineseArray();
for(int i=0;i<word;i++)
{
fprintf(fp,"%c ",*(chinese+i));
}
fclose(fp);
int count=(Cnum-1)/2;
printf("汉字的个数:%d\n",count);
}
int main()
{
English();
Chinese();
return 0;
}
但是文件fprintf写入时需要进行转码,但是不是很会,有没有大神指导一下