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();
}
展开
 我来答
你眼中_我蓝移
2013-04-29 · TA获得超过179个赞
知道答主
回答量:70
采纳率:0%
帮助的人:72.9万
展开全部
首先,你做文件的输入输出的时候不该用.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、读东西的时候别固定读多少字,读到文件尾了就要结束。不然你还是会读到乱码!
祝学习进步
cossbow
2013-04-28 · TA获得超过697个赞
知道小有建树答主
回答量:798
采纳率:100%
帮助的人:221万
展开全部
你在写入文件之前加个输出代码,把字符串输出,看看字符串里有东西没
更多追问追答
追问
出现是一样的错误,我觉得应该是没有结束符的缘故,但是不知道怎么加这个结束符,毕竟是读取数据。
追答
比如最后一个元素是 a[k] ,就这样: a[k+1]='\0'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-29
展开全部
读的时候应该读到EOF结束吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式