读书人

关于文件读写有关问题求帮!

发布时间: 2012-02-27 10:00:22 作者: rapoo

关于文件读写问题,求帮!!!
小弟现在对一个TXT文件进行读写,其格式如下:
$#DATE#$
Test-Start-Date 2006/11/13_19:17:44
Test-End-Date 2006/11/13_19:17:46
$#TESTDATA#$
Dut# IC# Waf# IC(Waf)# P/F Bin Cat Xadr Yadr
1 1 1 1 FAIL 2 2 140 135
$#DUT1TEST#$
Test# Pin PF Value L-Limit U-Limit Unit DataName Comment/PinName
101 + *U - - - - - VDD(-)
101 101 P -0.387 -1.500 -0.200 V - VDDC
101 102 P -0.384 -1.500 -0.200 V - VDDA
101 103 *U -0.005 -1.500 -0.200 V - VDDD
101 104 P -0.389 -1.500 -0.200 V - VDDIO
110 + *U - - - - - ANALOG (-)
110 201 P -0.617 -1.500 -0.200 V - VPP
110 202 P -0.516 -1.500 -0.200 V - VOUT


110 203 *U -0.008 -1.500 -0.200 V - VCLX4
110 204 P -0.580 -1.500 -0.200 V - VLCD
110 205 P -0.523 -1.500 -0.200 V - VL5
110 206 P -0.600 -1.500 -0.200 V - VL4
110 207 P -0.555 -1.500 -0.200 V - VL3
110 208 P -0.581 -1.500 -0.200 V - VL2
110 209 P -0.635 -1.500 -0.200 V - ANALOG_TEST
120 = P - - - - - LOGIC (-)
121 = P - - - - - LOGIC (+)
131 = *F - - - - - LCD odd pin (-)
132 = *F - - - - - LCD even pin (-)


133 = *F - - - - - LCD odd pin (+)

我现在想实现,在界面上输入101,就把所有101开头的那一些行全部输出到另外一个TXT中。请问怎么来实现?也就是说怎么来判断?请高手指点指点。谢谢拉~~
我用CreateFile()这个函数打开文件,属性选择read。我用GetFileSize()得到文件的大小,请问我接下来怎么来实现一行一行读呢?用什么函数???请高手给点代码吧~~谢谢拉~~

[解决办法]
char str[256]; //假设你要读的文件每行字符数不超过256

fp = fopen(...); //你要读入的文本
fpDest = fopen(...); //你要写入的文本

//先读掉前8行
for(i=0; i <8; i++)
fgets(str, 256, fp);
//开始取数据
while(!feof(fp))
{
fgets(str, 256, fp);
//假设文本的每行在101前面是两个空格
if(0==strncmp(str[2], "101 ", 3))
{
fputs(str, fpDest);
}
}
//结束
fflush(fp);
fclose(fp);
fflush(fpDest);
fclose(fpDest);
[解决办法]
对文件做个调查,看每行的数据量有多大,256改成其他数也是可以的.
m_str关联到查询所用的编辑框,则可以:
int nLength = m_str.GetLength();
char *strQuery = m_str.GetBuffer(nLength);
.....
if(0==strncmp(str[2], strQuery, nLength))
......
[解决办法]
ifstream openf(...);
ofstream outfile(...);

string line;
while(!openf.fail())
{
getline(openf, line);
istringstream str(line);

int index;
str> > index;
if(index == 101) coutfile < <line; //如果首索引为 101, 输出到指定文件
}
......
[解决办法]
int _tmain(int argc, _TCHAR* argv[])
{
ifstream ifs( "c:\\1.txt ");

while(!ifs.eof())
{
string str;
getline(ifs,str);

int i = 0;
while(str[i] == ' ')
{
str.erase(0,1);
}

if (str.substr(0,3)== "101 ")
{
cout < <str < < "\n ";
}
}
system( "pause ");
return 0;
}

读书人网 >C++

热点推荐