• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

CFile 写文件数字为什么变成乱码?

xinyue19840302 2008-03-23 09:40:43
我刚开始是用C++写文件(代码如下:)
for(j=0;j<4;j++)
{ sprintf(filename,"TD%d.txt",j+1);//给写文件命名,以通道数命名的。

ofstream outfile(filename,ios::out);//存到记事本文件中
if(!outfile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for(i=0;i<2048;i++)
{
outfile<<setw(4)<<i+1<<" ";
for(k=0;k<LineNum;k++)
{ if(j==0)

outfile<<setw(3)<<T1[k][i]<<" ";

if(j==1)

outfile<<setw(3)<<T2[k][i]<<" ";

if(j==2)
outfile<<setw(3)<<T3[k][i]<<" ";

if(j==3)
outfile<<setw(3)<<T4[k][i]<<" ";

}
outfile<<endl;
}

outfile.close();

}
如何把其相应的转化成CFile写文件语句?请高手指点





...全文
208 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xinyue19840302 2008-03-23
[color=#FF0000]恳请高手指点,在线等![/color]
回复
xinyue19840302 2008-03-23
		char filename2[20];
int k,l;
CString str="\r\n";
CString sz;
for(j=0;j<4;j++)
{ sprintf(filename2,"TD%d.txt",j+1);//给写文件命名,以通道数命名的。
file.Open(filename2,CFile::modeCreate|CFile::modeWrite);

for(i=0;i<2048;i++)
{
sz.Format("%d \0",i+1);
file.Write(&(sz),sizeof(sz));

for(k=0;k<m_LineNumber;k++)
{
if(j==0)
{
sz.Format("%d ",T1[k][i]);
file.Write(&sz,sizeof(sz));
}
if(j==1)

//outfile<<setw(3)<<T2[k][i]<<" ";
{sz.Format("%d ",T2[k][i]);

file.Write(&(sz),sizeof(sz));}

if(j==2)
{sz.Format("%d ",T3[k][i]);
file.Write(&(sz),sizeof(sz));}
if(j==3)
{sz.Format("%d ",T4[k][i]);
file.Write(&(sz),sizeof(sz));}

}
file.Write(str,sizeof(str) );
}

file.Close();

}

我自己是这样写得,得到的是乱码!
回复
xinyue19840302 2008-03-23
如何控制写入的格式,比如设置宽度,空格等
回复
xinyue19840302 2008-03-23
我也是这么做的,得到的确实乱码
回复
CFile f
int x;
f.write( &x , sizeof(x) );
回复
xinyue19840302 2008-03-23
数组T1,T2,T3,T4都是int型数据
回复
xinyue19840302 2008-03-23
outfile < <setw(4) < <i+1 < <" ";

outfile < <setw(3) < <T1[k][i] < <" ";

主要是这样的语句这么转换?
回复
xinyue19840302 2008-03-23
不错,问题都解决了,谢谢各位!就是按照八楼和十楼的做法!
回复
看10楼做法
回复
xinyue19840302 2008-03-23
1 24 24
2 26 26
3 24 24
4 25 25
5 24 24
6 25 25
7 25 24
8 25 24
9 24 24
10 25 25
11 24 24
12 25 24
13 24 24
14 25 24
回复
xinyue19840302 2008-03-23
1 24 24
2 26 26
3 24 24
4 25 25
5 24 24
6 25 25
7 25 24
8 25 24
9 24 24
10 25 25
11 24 24
12 25 24
13 24 24
14 25 24

而我想得到下面的结果
1 24 24
2 26 26
3 24 24
4 25 25
5 24 24
6 25 25
7 25 24
8 25 24
9 24 24
10 25 25
11 24 24
12 25 24
13 24 24
14 25 24
回复
arong1234 2008-03-23
str.Format("%d",x);

改成

str.Format("%4d",x);
回复
xinyue19840302 2008-03-23
乱码是解决了!如何设置宽度啊?setw(4)
谢谢!
回复
Eleven 2008-03-23
CFile f
int x;
CString str;
str.Format("%d",x);
f.Write( str,str.GetLength());
f.Close();
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-03-23 09:40
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……