程序代码:
#include "stdafx.h"
#include <stdlib.h>
// 程序功能:从数据文件中读入数据,储存在the_Data中,这个量的数据类型是Matlib_Data
// the_Data.Element_Number才是数据的个数
struct Matlib_Data
{
unsigned int Element_Number; // 真正的元素数目
char Separate; // 数据文件使用的分隔符
double Data[2048]; // 储存数据的数组
} the_Data;
double Get_One_Data(FILE* fp, const char Separate);
bool Save_Data(const char FileName[], Matlib_Data* pData);
// 主程序入口
int _tmain(int argc, _TCHAR* argv[])
{
FILE* fp;
errno_t nError;
the_Data.Separate = 0x09; // 数据分隔符为TAB
the_Data.Element_Number = 0; // 数据数目
nError = fopen_s(&fp, "D:\\externalrough1.dat", "r");
if (nError == 0)
{
fseek(fp, 0, SEEK_SET);
while (!feof(fp))
{
the_Data.Data[the_Data.Element_Number] = Get_One_Data(fp, the_Data.Separate);
printf_s("%.17f\n", the_Data.Data[the_Data.Element_Number]); // 本行使用中可不要
the_Data.Element_Number++;
}
the_Data.Element_Number--;
fclose(fp);
printf_s("\n总共读入%d个数据\n\n", the_Data.Element_Number);
if (Save_Data("D:\\New.DAT", &the_Data))
{
printf_s("\n新的数据文件储存为D:\\New.DAT\n\n");
}
}
else
{
printf_s("需要读入的数据文件无法打开\n\n");
}
return 0;
}
// 从数据文件读入一个数据
double Get_One_Data(FILE* fp, const char Separate)
{
int ch;
char Buffer[256];
char* pBuffer = Buffer;
double data;
ch = fgetc(fp);
while (ch != EOF && ch != Separate)
{
*pBuffer = ch;
pBuffer++;
ch = fgetc(fp);
}
*pBuffer = '\0';
sscanf_s(Buffer, "%lf", &data, _countof(Buffer));
return data;
}
// 重新储存数据
bool Save_Data(const char FileName[], Matlib_Data* pData)
{
FILE* fp;
errno_t nError;
nError = fopen_s(&fp, FileName, "w");
if (nError == 0)
{
fseek(fp, 0, SEEK_SET);
fwrite(pData, sizeof(*pData), 1, fp);
fputc(EOF, fp);
fclose(fp);
return true;
}
else
{
printf_s("\n储存文件%s无法建立\n\n", FileName);
return false;
}
}
[ 本帖最后由 TonyDeng 于 2011-8-5 21:09 编辑 ]

授人以渔,不授人以鱼。

