test.txt 中有数字式1 2 3 4 5 6 0
CFile MyFile;
int sum = 0;
int count = 0;
int data;
if (MyFile.Open("test.txt",CFile::modeRead) ==FALSE) //open file
{
MessageBox("file erro");
}
do
{
MyFile.Read((void*)&data,sizeof(int));
sum += data; //累加
count++; // 计算个数
} while (data != 0); //为0时结束
MyFile.Close(); //close file
CString output;
output.Format("%f %d %d",(float)sum/count,sum,count);
pDC->TextOut(0,0,output);//output 平均直,累加和,个数
CFile MyFile;
int sum = 0;
int count = 0;
int data;
if (MyFile.Open("test.txt",CFile::modeRead) ==FALSE) //open file
{
MessageBox("file erro");
}
do
{
MyFile.Read((void*)&data,sizeof(int));
sum += data; //累加
count++; // 计算个数
} while (data != 0); //为0时结束
MyFile.Close(); //close file
CString output;
output.Format("%f %d %d",(float)sum/count,sum,count);
pDC->TextOut(0,0,output);//output 平均直,累加和,个数
如果是字符串那么总共才7个字节,读取int型的怎么可能?读2次就跑了。怎么data=0哦。
没有结果!我存在TEST.TXT中的是INT型数据,我的数据结尾是0(判断0就跳出循环了),
我调是的另外一个程序也是这样的能用,只不过读出后是用数组来存放的!
请确信你的test.txt在16进制下是以下面方式显示
010000000200000003000000004000000050000000600000000000000
如果是二进制的话,这样做肯定不对,每次需要read 1个字符,然后,把它atoi变成一个数字再和你的sum相加
error?
char temp[2] = {0};
do
{
for( ; !strcmp(temp," ") && MyFile.GetPosition() < MyFile.GetLength(); )
{
MyFile.Read(temp,1);
strcat(digitalstr,temp);
}
count ++;
sum + = itoa(digitalstr); // 后边的多余空各不影响转化
}while(MyFile.GetPosition() < MyFile.GetLength());
使用Uedit打开可以看到
00000000h:31 20 32 20 33 20 34 30 35 20 36 20 30 ;1 2 3 4 5 6 0
程序读入的实际上都是左边的值。如果想按你的思路,希望程序能直接从txt文件中读取十进制数据来进行运算的话,代码的确应该修改一下。
同意FreeSeagull(孤海闲鸥)的思路:先将每个数字按字符串读出来,以空格为数字分界,然后atoi(),转化成数字,再相加!