| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1372 人关注过本帖
标题:请问怎样判定文件的结束?文件类型为TXT.希望不用指定一个文件具体有多少行 ...
只看楼主 加入收藏
ding_inshili
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-9-13
收藏
 问题点数:0 回复次数:3 
请问怎样判定文件的结束?文件类型为TXT.希望不用指定一个文件具体有多少行进行循环

最近我写了一个小东东,需要利用文件结束的判定来结束文件的读取,但是我不知到怎样设置,好像在c语言里面就有所涉及这方面的内容,但是一时不记得怎样搞了,望知道着给于提示提示。
附录代码如下:
//注:思路是先读取,再分段,然后分析段,再连接,最后将符合条件着写入文件
//注:readfrom.n40内容如下
line1 tester1 0001 20071001224510 20071002083122 20060322
line1 tester2 0002 20071001224510 20071002083122 20060322
line1 tester3 0000 20071001224510 20071002083122 20060322
line1 tester4 0003 20071001224510 20071002083122 20060322
line1 tester5 0000 20071001224510 20071002083122 20060322
..........
//执行后writeto.txt内容如下:
line1 tester1 0001 20071001224510 20071002083122 20060322
line1 tester2 0002 20071001224510 20071002083122 20060322
line1 tester4 0003 20071001224510 20071002083122 20060322
.................

void CFilerwDlg::OnOK()
{
char* pFileNamer="readfrom.n40";//读文件名称
char* pFileNamew="writeto.txt"; //写文件名称
CString linestr; //按行读内容字符串

TRY
{
CStdioFile filer(pFileNamer, CFile::modeRead);
CStdioFile filew(pFileNamew, CFile::modeCreate|CFile::modeWrite);

for(int i=0; i<=100; i++)//我所问的问题就在这里,怎样判定文件结束,而不要用指定该文件的实际行数
{ //好像do-while比较方便,请高手提示提示
filer.ReadString(linestr); //read first
CString licode=linestr.Left(6); //get string 1
CString tecode=linestr.Mid(6, 8); //get string 2
CString ercode=linestr.Mid(14, 4); //get...
CString becode=linestr.Mid(19,15);
CString encode=linestr.Mid(34,15);
CString opcode=linestr.Mid(49, 9);

if(ercode!=_T("0000")) //set condition that error code
{ //fails to meet "0000".
CString total=licode+tecode+ercode+becode+encode+opcode+'\n';
filew.WriteString(total); //then write
}
}

filer.Close();
filew.Close();

}

CATCH(CFileException,e)
{
#ifdef _DEBUG
afxDump<<"File could not be opened"<<e->m_cause<<"\n";
#endif
}
END_CATCH

CDialog::OnOK();
}

搜索更多相关主题的帖子: TXT 文件 结束 类型 c语言 
2007-10-12 21:57
Janlex
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:303
专家分:0
注 册:2006-9-12
收藏
得分:0 
if (filer.GetPosition() == filer.GetLength())

★★★★★欢迎光临我的博客 ★★★★★
http://www.
2007-10-12 23:18
ding_inshili
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-9-13
收藏
得分:0 
这位大哥:
不行啊!!!
只能读写一行啊!!!


然后就不往下进行了.............

2007-10-12 23:29
ding_inshili
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-9-13
收藏
得分:0 

搞定了:将上述的代码变成这样便可以了.hehe
原来:
for(int i=0; i<=100; i++)//我所问的问题就在这里,怎样判定文件结束,而不要用指定该文件的实际行数
{ //好像do-while比较方便,请高手提示提示
filer.ReadString(linestr); //read first
CString licode=linestr.Left(6); //get string 1
CString tecode=linestr.Mid(6, 8); //get string 2
CString ercode=linestr.Mid(14, 4); //get...
CString becode=linestr.Mid(19,15);
CString encode=linestr.Mid(34,15);
CString opcode=linestr.Mid(49, 9);

if(ercode!=_T("0000")) //set condition that error code
{ //fails to meet "0000".
CString total=licode+tecode+ercode+becode+encode+opcode+'\n';
filew.WriteString(total); //then write
}
}





现在变换成:
do
{ //好像do-while比较方便,请高手提示提示
filer.ReadString(linestr); //read first
CString licode=linestr.Left(6); //get string 1
CString tecode=linestr.Mid(6, 8); //get string 2
CString ercode=linestr.Mid(14, 4); //get...
CString becode=linestr.Mid(19,15);
CString encode=linestr.Mid(34,15);
CString opcode=linestr.Mid(49, 9);

if(ercode!=_T("0000")) //set condition that error code
{ //fails to meet "0000".
CString total=licode+tecode+ercode+becode+encode+opcode+'\n';
filew.WriteString(total); //then write
}
}while(filer.GetPosition()<filer.GetLength());

便OK了


2007-10-13 00:06
快速回复:请问怎样判定文件的结束?文件类型为TXT.希望不用指定一个文件具体有多 ...
数据加载中...
 
   



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

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