程序代码:
#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 编辑 ]
授人以渔,不授人以鱼。