请教读取文本文件结尾出现额外字符的原因

htting 2006-11-17 11:39:54

首先用iFileHandle = FileOpen(path.txt,fmOpenRead);获得path.txt中记录的路径

path.txt的内容为 E:\out.txt

但用ShowMassage看到的结果却为 E:\out.txt... ...为很奇怪的字符
多次执行之后才可以得到正确的路径 E:\out.txt

请教为什么结尾会有额外的字符存在呢?
path.txt清空后再写入路径 E:\out.txt还是会在结尾出现额外的字符

请教原因,谢谢!


...全文
133 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunxianren 2006-11-29
  • 打赏
  • 举报
回复
有TCP协议在同一子网中进行文件的传输代码嘛?谢谢~
yhec 2006-11-18
  • 打赏
  • 举报
回复
同意楼上,读到的一串字符,要加上尾0,才能当成字符串显示
FFSB 2006-11-17
  • 打赏
  • 举报
回复
你贴的内容与问题无关,能否贴出有关的代码?ReadFile/WriteFile
BenLeak 2006-11-17
  • 打赏
  • 举报
回复
应该是你没有初始化引起的,或者读取文件内容后应该截取读取长度后面的数据
ReadFile 函数返回值就是读取成功的字符长度
FFSB 2006-11-17
  • 打赏
  • 举报
回复
pszBuffer_P[iFileLength_P] = '\0';
这个得加上!
ccrun.com 2006-11-17
  • 打赏
  • 举报
回复
设个断点,看看iFileLength_P 的值是多少。
另外,程序结束时记的释放资源:

delete []pszBuffer_P;

否则运行以后有内存泄露。
htting 2006-11-17
  • 打赏
  • 举报
回复
int iFileHandle_P;
int iBytesRead_P;
char *pszBuffer_P;

iFileHandle_P = FileOpen("path.txt", fmOpenRead);
iFileLength_P = FileSeek(iFileHandle_P,0,2);
FileSeek(iFileHandle_P,0,0);
pszBuffer_P = new char[iFileLength_P+1];
iBytesRead_P = FileRead(iFileHandle_P, pszBuffer_P, iFileLength_P);
FileClose(iFileHandle_P);

ShowMessage(pszBuffer_P);

ShowMessage的结果为E:\out.txt... ...为很奇怪的字符
将程序执行很多遍之后才能得到正确结果E:\out.txt
请教其原因,该怎样才能一次获得path.txt中正确的路径呢?

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧