VC 如何把文本文件中的内容读取出来并与对话框输入的ID比较?

GL_010320327 2009-07-23 08:54:28
各位大哥,小弟刚学VC,请教下啊
文本文件的格式如下:第一列为FixtureID,第二列为PCAREV,第三列为Pname.
G01308AB B P01308010C
G01308AB B P01308010C
G01308AB B P01308010C
、、、、、、、、、、、

程序的目的是从对话框中输入FixtureID和PCAREV,点击OK后读取文本文件中的内容与之比较,如果输入的FixtureID和PCAREV
与文本文件一行中的FixtureID,PCAREV一致,则读取第三列的Pname并将其写入c:\\USER\\OBJECT\\startup.bch文件中,刚学不久,写了如下论七八糟的程序,请各位大哥帮我看看如何修改啊~~ 非常感谢


void CStartTestDlg::OnOKToStartTest()
{

CString strText;

UpdateData(TRUE);
//=============================================================================
strText.Format(m_FixtureID); //获取对话框输入的FixtureID
strText.Format(m_PCAREV); //获取对话框输入的PCAREV


//=============================================================================

FILE *fp;

int i;
i = 0;
char program;

fp=fopen("C:\\USER\\Program.txt","r");//以读模式打开文本文件

for(i=0;i<99;i++)
fread(&prog[i],sizeof(program_type),1,fp);//将第一行数据读到缓冲区

//将该行数据的n个字符串读到n个临时字符串变量
scanf("%S%S%S",prog[i].FixtureID,prog[i].PCAREV,prog[i].Pname);

if((prog[i].FixtureID==(LPCSTR)m_FixtureID)&&(prog[i].PCAREV==(LPCSTR)m_PCAREV))
{

// CString.format("%s", char*); //char类型转化为CString类型

strText.Format(_T("!! copy M:\\QLogic\\+Pname+\\+Pname+.* C:\\User\\OBJECT\\+Pname+.*
"));


CString strpath = _T("c:\\USER\\OBJECT\\startup.bch");
CFile mFile(strpath, CFile::modeWrite|CFile::modeCreate);
mFile.Write(strText,strText.GetLength());
mFile.Flush();
mFile.Close();
}
break;
fclose(fp);


else

continue;


ShellExecute(NULL,NULL,_T("DownLoad.cmd"),NULL,_T("c:\\USER\\Start\\"), SW_SHOW);

EndDialog(0);


}
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gg606 2009-07-24
  • 打赏
  • 举报
回复
不知我给你的代码可以不?
兄弟,还得加把劲儿啊!
GL_010320327 2009-07-24
  • 打赏
  • 举报
回复
谢谢gg606,辛苦了
//=====定义program_type===
struct program_type
{ char FixtureID[20];
char PCAREV[5];
char Pname[30];
}prog[100];

//=下面的这句想达到的目的是把它写进startup.bch文件中,其中%s是读出来的Pname.
strText.Format(_T("!! copy M:\\QLogic\\%s\\\%s.*C:\\User\\OBJECT\\\%s.*"));

CString path("c:\\USER\\OBJECT\\startup.bch");
gg606 2009-07-23
  • 打赏
  • 举报
回复
[code=C/C++]
f.WriteString(progType.Pname);
gg606 2009-07-23
  • 打赏
  • 举报
回复
[code=C++][/f.WriteString(progType.Pname);]
gg606 2009-07-23
  • 打赏
  • 举报
回复
看得我不是一般的晕,下面的代码你参考一下嘛

[code=C/C++][void CStartTestDlg::OnOKToStartTest()
{
UpdateData(TRUE); //这一句就可以更新m_FixtureID、m_PCAREV
//=============================================================================

FILE *fp;
fp = fopen("C:\\USER\\Program.txt","rt");//以读模式打开文本文件
if(NULL == fp)
{
//报告打开文件失败
return;
}

program_type progType; //你的program_type是怎么定义的?
while ( EOF != fscanf("%S%S%S", progType.FixtureID, progType.PCAREV, progType.Pname) )
{
if(m_FixtureID == progType.FixtureID && m_PCAREV == progType.PCAREV)
{
//这一句搞什么?
strText.Format(_T("!! copy M:\\QLogic\\+Pname+\\+Pname+.* C:\\User\\OBJECT\\+Pname+.*")); //

CString path("c:\\USER\\OBJECT\\startup.bch");
try
{
CStdioFile f(path, CFile::modeWrite|CFile::modeCreate|CFile::typeText );
f.WriteString(progType.Pname, progType.Pname.GetLength());
f.Close();
break;
}
catch(CFileException * e)
{
e->ReportError();
e->Delete();
f.Abort();
break;
}
}
}
fclose(fp);

//??
ShellExecute(NULL,NULL,_T("DownLoad.cmd"),NULL,_T("c:\\USER\\Start\\"), SW_SHOW);
EndDialog(IDOK);

}]

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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