| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 859 人关注过本帖
标题:如何读出文本文件的前18个字符?
只看楼主 加入收藏
行空天马
Rank: 1
等 级:新手上路
威 望:1
帖 子:523
专家分:0
注 册:2006-5-19
收藏
 问题点数:0 回复次数:7 
如何读出文本文件的前18个字符?

我是这样做的:

char* pszFilename="d:\\jinfile.txt";
CFile myFile;
CFileException fileExcept;
CString str01;

void* lpBuf=(void*)&str01;

UINT fileLong=myFile.Read(lpBuf,18);

AfxMessageBox(str01);

一运行,就出错。我该怎样做?

[此贴子已经被作者于2006-6-9 14:24:15编辑过]

搜索更多相关主题的帖子: 文本文件 字符 
2006-06-09 14:16
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
void* lpBuf=(void*)&str01;

UINT fileLong=myFile.Read(lpBuf,18);
不能这样用,CString用来保存字符串的是个指针,你直接用void* lpBuf=(void*)&str01;取的不过是CString对象的地址,你往CString对象的内存里写入18字节数据当然内存错误,根本不能这样用。
char szBuffer[24];
void* lpBuf=(void*)szBuffer;
UINT fileLong=myFile.Read(lpBuf,18);
这样就不会错了,或者你直接给lpBuf申请内存

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-09 14:37
ppzzhhsky
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-5-17
收藏
得分:0 
高手

QQ:397115921 TELEPHONE:13518215101 欢迎大家和我一起交流学习,一起进步
2006-06-09 15:50
行空天马
Rank: 1
等 级:新手上路
威 望:1
帖 子:523
专家分:0
注 册:2006-5-19
收藏
得分:0 

谢谢版主!
我又改成这样了。
char* pszFilename="d:\\jinfile.txt";
CFile myFile;
CFileException fileExcept;
CString str01;
char abcd[30]="";
void* lpBuf=(void*)abcd;

UINT fileLong=myFile.Read(lpBuf,18);
str01=_T(abcd);
AfxMessageBox(str01);

还是出错。怎么改?谢谢版主。


好好学习,天天向上。
2006-06-09 18:22
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用行空天马在2006-6-9 18:22:58的发言:

谢谢版主!
我又改成这样了。
char* pszFilename="d:\\jinfile.txt";
CFile myFile;
CFileException fileExcept;
CString str01;
char abcd[30]="";
void* lpBuf=(void*)abcd;

UINT fileLong=myFile.Read(lpBuf,18);
str01=_T(abcd);
AfxMessageBox(str01);

还是出错。怎么改?谢谢版主。

请问你文件打开成功了吗?是否判断了TRUE == myFile.Open()?


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-12 09:13
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
收藏
得分:0 
在读取之前要open()啊,大兄弟.没打开,怎么读啊??
完了,记得close();

我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-06-12 09:38
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
收藏
得分:0 

char* pszFilename="d:\\jinfile.txt";
CFile myFile;
CFileException fileExcept;
CString str01;
char abcd[30]="";
void* lpBuf=(void*)abcd;

if(!myFile.Open(pszFilename,CFile::modeRead,NULL))
{
AfxMessageBox("打开文件失败");
return;
}
UINT fileLong=myFile.Read(lpBuf,18);
str01=_T(abcd);
AfxMessageBox(str01);
myFile.Close();


我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-06-12 09:47
行空天马
Rank: 1
等 级:新手上路
威 望:1
帖 子:523
专家分:0
注 册:2006-5-19
收藏
得分:0 

搞定,谢谢。感谢回帖的大侠们。
的确是忘了myFile.Open(pszFilename,CFile::modeReadWrite,NULL)了。

[此贴子已经被作者于2006-6-13 9:34:48编辑过]


好好学习,天天向上。
2006-06-13 09:33
快速回复:如何读出文本文件的前18个字符?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043685 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved