c++从txt文件读取字符串输出时乱码
#include<fstream>#include<fstream>#include<iostream>usingnamespacestd;voidmain(){inti...
#include <fstream>
#include <fstream>
#include <iostream>
using namespace std;
void main()
{
int i,j;
float Acount[63],Bcount[63],Ccount[63],Dcount[63],Ecount[63],Fcount[63],vA[63],vB[63],vC[63],vD[63],vE[63],vF[63];
char a[505];
char b[8][63];
ifstream fin("D:/我的输入文件.doc");
for(i=0;i<504;i++)
fin>>a[i];
for(i=0;i<504;i++)
cout<<a[i];
for(i=0;i<8;i++)
{
for(j=0;j<63;j++)
{
b[i][j]=a[j+i*63];
}
}
for(i=0;i<8;i++)
for(j=0;j<63;j++)
{
if(b[i][j]='A') Acount[j]=Acount[j]+1.0;
if(b[i][j]='B') Bcount[j]=Bcount[j]+1.0;
if(b[i][j]='C') Ccount[j]=Ccount[j]+1.0;
if(b[i][j]='D') Dcount[j]=Dcount[j]+1.0;
if(b[i][j]='E') Ecount[j]=Ecount[j]+1.0;
if(b[i][j]='F') Fcount[j]=Fcount[j]+1.0;
}
ofstream fout("D:/我的输出文件.doc");
for(j=0;j<63;j++)
{
vA[j]=Acount[j]/32.0;
vB[j]=Bcount[j]/32.0;
vC[j]=Ccount[j]/32.0;
vD[j]=Dcount[j]/32.0;
vE[j]=Ecount[j]/32.0;
vF[j]=Fcount[j]/32.0;
fout<<"在第"<<j+1<<"道题中, "<<"其中A占比例为:"<<vA[j]*100<<"%"<<" ; "<<"其中B占比例为:"<<vB[j]*100<<"%"<<" ; "<<"其中C占比例为:"<<vC[j]*100<<"%"<<" ; "<<"其中D占比例为:"<<vD[j]*100<<"%"<<" ; "<<"其中E占比例为:"<<vE[j]*100<<"%"<<" ; "<<"其中F占比例为:"<<vF[j]*100<<"%"<<endl;
}
fout.close();
cin.get();
} 展开
#include <fstream>
#include <iostream>
using namespace std;
void main()
{
int i,j;
float Acount[63],Bcount[63],Ccount[63],Dcount[63],Ecount[63],Fcount[63],vA[63],vB[63],vC[63],vD[63],vE[63],vF[63];
char a[505];
char b[8][63];
ifstream fin("D:/我的输入文件.doc");
for(i=0;i<504;i++)
fin>>a[i];
for(i=0;i<504;i++)
cout<<a[i];
for(i=0;i<8;i++)
{
for(j=0;j<63;j++)
{
b[i][j]=a[j+i*63];
}
}
for(i=0;i<8;i++)
for(j=0;j<63;j++)
{
if(b[i][j]='A') Acount[j]=Acount[j]+1.0;
if(b[i][j]='B') Bcount[j]=Bcount[j]+1.0;
if(b[i][j]='C') Ccount[j]=Ccount[j]+1.0;
if(b[i][j]='D') Dcount[j]=Dcount[j]+1.0;
if(b[i][j]='E') Ecount[j]=Ecount[j]+1.0;
if(b[i][j]='F') Fcount[j]=Fcount[j]+1.0;
}
ofstream fout("D:/我的输出文件.doc");
for(j=0;j<63;j++)
{
vA[j]=Acount[j]/32.0;
vB[j]=Bcount[j]/32.0;
vC[j]=Ccount[j]/32.0;
vD[j]=Dcount[j]/32.0;
vE[j]=Ecount[j]/32.0;
vF[j]=Fcount[j]/32.0;
fout<<"在第"<<j+1<<"道题中, "<<"其中A占比例为:"<<vA[j]*100<<"%"<<" ; "<<"其中B占比例为:"<<vB[j]*100<<"%"<<" ; "<<"其中C占比例为:"<<vC[j]*100<<"%"<<" ; "<<"其中D占比例为:"<<vD[j]*100<<"%"<<" ; "<<"其中E占比例为:"<<vE[j]*100<<"%"<<" ; "<<"其中F占比例为:"<<vF[j]*100<<"%"<<endl;
}
fout.close();
cin.get();
} 展开
3个回答
展开全部
首先,你做文件的输入输出的时候不该用.doc的,word不是纯文本。另外,ifstream fin("D:/我的输入文件.doc");
for(i=0;i<504;i++)
fin>>a[i];
for(i=0;i<504;i++)
cout<<a[i];
这一部分是从word里读东西,然后输出,可是word的刚开始时一堆格式信息,你是识别不了的,所以会出现乱码。
两个建议,
1、改成.txt纯文本文件做文件读写。
2、读东西的时候别固定读多少字,读到文件尾了就要结束。不然你还是会读到乱码!
祝学习进步
for(i=0;i<504;i++)
fin>>a[i];
for(i=0;i<504;i++)
cout<<a[i];
这一部分是从word里读东西,然后输出,可是word的刚开始时一堆格式信息,你是识别不了的,所以会出现乱码。
两个建议,
1、改成.txt纯文本文件做文件读写。
2、读东西的时候别固定读多少字,读到文件尾了就要结束。不然你还是会读到乱码!
祝学习进步
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询