假设文件17.txt中按顺序存放了数个int 数据,数据的个数求知,只知道该int数据的最后一个的值为0。编写程序,统计17.txt文件中数据的个数,并求出这些数的总和和平均值。(其中我在E盘建立了一个txt文件"17.txt")编写以下代码,编译时能看到生成的exe文件,但就停在exe界面了,看不到最终结果。不知什么原因,请高手帮忙!void CMy002View::OnDraw(CDC* pDC)
{
CMy002Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CFile MyFile;
int iData;
int iSum=0;
int nCount=0;
if(MyFile.Open ("E:\\17.txt", CFile::modeRead)==FALSE)
{
MessageBox("File not open!");
return;
}
do
{
MyFile.Read ((void*)&iData,sizeof(int));
iSum+=iData;
nCount++;
}while(iData!=0);
MyFile.Close ();
CString strOutput;
strOutput.Format ("%f %d %d",(float)iSum/nCount,iSum,nCount);
pDC->TextOut (0,0,strOutput);
}
{
CMy002Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CFile MyFile;
int iData;
int iSum=0;
int nCount=0;
if(MyFile.Open ("E:\\17.txt", CFile::modeRead)==FALSE)
{
MessageBox("File not open!");
return;
}
do
{
MyFile.Read ((void*)&iData,sizeof(int));
iSum+=iData;
nCount++;
}while(iData!=0);
MyFile.Close ();
CString strOutput;
strOutput.Format ("%f %d %d",(float)iSum/nCount,iSum,nCount);
pDC->TextOut (0,0,strOutput);
}
解决方案 »
- 求一个思路,VC如何实现P2P的多人聊天
- 设备坐标和逻辑坐标 明天就考试 急!!!!
- 在对话框中显示一张图片,使图像变暗显示(能用进度条调整图像亮度),并实现鼠标划过的区域恢复成原亮度
- 程序出现了一个很致命的错误
- 在VC6.0中使用Gdi+作图,如何实现双缓机制.
- 感觉VC的编译器设置如此重要,重金向大家寻求有没有详细讲解VC中编译器设置的书!!!
- 请问有什么工具能将.pdf文件转换为.txt或 .doc的吗?
- CMFCTabCtrl控件使用出现问题,求救
- CPU占用率百分之90
- 关于画线问题,求帮忙解决
- 我用spy++看到一个窗口的windows handle为000D0680,请问我如何才能把这个句柄放在我的程序中使用?
- 关于多线程与窗口句柄的问题
while(MyFile.Read ((void*)&iData,sizeof(int))!=0)
{
iSum+=iData;
nCount++;
}
你一步一步跟踪一下会找到问题的
应该是while(iData!=0)这个终止条件永远不成立导致死循环
while(MyFile.Read ((void*)&iData,sizeof(int))!=0)
{
iSum+=iData;
nCount++;
}
后还是不对呀,麻烦你们亲自试一下,这个问题已经几天没解决了,多谢了!
char ch;
string str=""
while(MyFile.Read ((void*)&ch,sizeof(char))!=0)
{
if(ch==''||ch==0x0d||ch==0x0a)
{
nCount++;
iSum+=atoi((LPCTSTR)str);
str=="";
}else
{
str+=ch;
}
}
char ch;
string str=""
while(MyFile.Read ((void*)&ch,sizeof(char))!=0)
{
if(ch==' '||ch==0x0d||ch==0x0a)
{
if(str!="")
{
nCount++;
iSum+=atoi((LPCTSTR)str);
str=="";
}
}else
{
str+=ch;
}
}
改成
CString str="";
前几天我将它做了出来。CFile MyFile;
CString strOutput;
char ch=0;
int iSum=0;
int nCount=0; MyFile.Open ("17.txt",CFile::modeRead);
while(MyFile.Read((void*)&ch,1)!=0)
{
if(ch!=0x0d)
{
if(ch!=32)
{
strOutput+=ch;
}
else if(ch==32)
{
if(atoi(strOutput)!=0)
{
iSum+=atoi(strOutput);
nCount++;
strOutput=" ";
}
}
}
else
{
if(strOutput!=" ")
{
iSum+=atoi(strOutput);
nCount++;
strOutput=" ";
}
MyFile.Read ((void*)&ch,1);
if(ch!=0x0a)
{
MessageBox("文件格式错误!");
MyFile.Close();
return;
}
}
}
MyFile.Close ();
strOutput.Format ("ly=%d f=%f s=%d n=%d",nCount*17,(float)iSum/nCount,iSum,nCount);
pDC->TextOut (0,0,strOutput);真的好感谢!