现有一文件,内容大概如下:
点号 X(单位mm) Y(单位mm) Z(单位mm)
1 10.1 11.1 12.1
2 20.2 22.2 45.2
3 123.5 15.5 412.4
.
.
.
100 54.5 5.5 5.7现在想把第一列数据放在Number[100],第二列X[100],第三列Y[100],第四列Z[100],
这个怎么实现啊 ?读取时空格和回车问题怎么解决?
点号 X(单位mm) Y(单位mm) Z(单位mm)
1 10.1 11.1 12.1
2 20.2 22.2 45.2
3 123.5 15.5 412.4
.
.
.
100 54.5 5.5 5.7现在想把第一列数据放在Number[100],第二列X[100],第三列Y[100],第四列Z[100],
这个怎么实现啊 ?读取时空格和回车问题怎么解决?
fgetw获取一行数据
然后sscanf等来分割空格等
{
filePathName=dlg.GetPathName();
}
CFile file; file.Open(filePathName,CFile::modeRead); int i;
for(i=0;i<1000;i++)
{
file.Read(&Number1[i],sizeof(int));
file.Read(&x1[i],sizeof(double));
file.Read(&y1[i],sizeof(double));
}
file.Close();
读取时总把空格给弄进去,换行也是问题
#define MAX_COUNT 100
try
{
CStdioFile file;
file.Open(_T("F:\\11.txt"), CFile::modeRead);
CString strText(_T(""));
int Number[MAX_COUNT] = {0};
float X[MAX_COUNT] = {0.0f};
float Y[MAX_COUNT] = {0.0f};
float Z[MAX_COUNT] = {0.0f};
int iVal = 0;
float fVal1 = 0.0f;
float fVal2 = 0.0f;
float fVal3 = 0.0f;
int nLineCount = 0;
while(file.ReadString(strText))
{
if(!strText.IsEmpty())
{
strText.Trim(_T(" "));
_stscanf(strText, _T("%d %f %f %f"), &iVal, &fVal1, &fVal2, &fVal3);
Number[nLineCount] = iVal;
X[nLineCount] = fVal1;
Y[nLineCount] = fVal2;
Z[nLineCount] = fVal3;
nLineCount++;
if(nLineCount >= MAX_COUNT)
{
break;
}
}
}
}
catch (CFileException* e)
{
e->ReportError();
e->Delete();
}
然后用strtok分离各个数据,转化成double存入数组即可。
do
{
} while (fscanf(f_handle,"%d %f %f %f", line, x_value,y_value,z_value)==4);
//对3 123.5 15.5 412.4
line=3;x_value=123.5;y_value15.5;z_value=412.4。
文件没问题,debug也没有错误,只是我把Number[0]输出到另外一个文件时 结果是乱码,我快烦死了我是菜鸟 。