📄 save_file_data.cpp
字号:
#include "Save_File_Data.h"
#include "stdafx.h"
///////////////////////////////////////////////////////////////////////////////////////
//Save 1D vectors with double elements
///////////////////////////////////////////////////////////////////////////////////////
BOOL save_1D(double *Tomb, int &n_x_a, int &n_x_b, int &n_t, CString &ut_nev)
{
CString File_Name;
FILE *fp;
File_Name.Format("%s_%d.dat",ut_nev,n_t);
fp=fopen(File_Name, "w+");
for ( int i = n_x_a; i < n_x_b; i++ )
{
fprintf(fp," %6.12f",Tomb[i]);
}
fclose(fp);
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 2D matrix with double elements
///////////////////////////////////////////////////////////////////////////////////////
BOOL save_2D(double **Tomb, int &n_x_a, int &n_x_b, int &n_y_a, int &n_y_b,
int &n_t, CString &ut_nev)
{
CString File_Name;
FILE *fp;
File_Name.Format("%s_%d.dat",ut_nev,n_t);
if ((fp=fopen(File_Name, "w+")) ==NULL)
return FALSE;
else
{
for (int i=n_x_a; i<n_x_b; i++)
{
for (int j=n_y_a; j<n_y_b; j++)
{
fprintf(fp,"%6.12f ",Tomb[i][j]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 2D matrix with double elements in binary file
///////////////////////////////////////////////////////////////////////////////////////
BOOL save_2D_binary(double **Tomb, int &nx, int &ny, int &n_t, CString &ut_nev)
{
CString File_Name;
FILE *fp;
File_Name.Format("%s_%dsz%d_%d.dat",ut_nev,nx,ny,n_t);
if ((fp=fopen(File_Name, "wb")) == NULL)
return FALSE;
else
{
fwrite(Tomb[0],sizeof(double),nx*ny,fp);
fclose(fp);
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////
//Reads 2D matrix with double elements from binary file
///////////////////////////////////////////////////////////////////////////////////////
BOOL load_2D_binary(double **Tomb, int &nx, int &ny, CString &ut_nev)
{
FILE *fp;
if ((fp=fopen(ut_nev, "rb")) == NULL)
return FALSE;
else
{
fread(Tomb[0],sizeof(double),nx*ny,fp);
fclose(fp);
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 2D matrix with int elements
///////////////////////////////////////////////////////////////////////////////////////
BOOL save_2D_int(int **Tomb, int &n_x_a, int &n_x_b, int &n_y_a, int &n_y_b,
int &n_t, CString &ut_nev)
{
CString File_Name;
FILE *fp;
File_Name.Format("%s_%d.dat",ut_nev,n_t);
if ((fp=fopen(File_Name, "w+")) ==NULL)
return FALSE;
else
{
for (int i=n_x_a; i<n_x_b; i++)
{
for (int j=n_y_a; j<n_y_b; j++)
{
fprintf(fp,"%d ",Tomb[i][j]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////
//Load 2D matrix with double elements
///////////////////////////////////////////////////////////////////////////////////////
int load_2D(double **Tomb, int &nx, int &ny, CString &ut_nev)
{
FILE *fname;
char str[100];
int i = 0;
int j = 0;
if( (fname = fopen( ut_nev, "r" )) != NULL )
{
while ( fscanf(fname,"%s", &str) != EOF )
{
if (i==nx)
return -3; //wrong dimensions
Tomb[i][j] = atof(str);
if (Tomb[i][j] == 0.0)
{
int k = 0;
while(str[k] != '\0')
{
if ( !( (str[k]>='0' && str[k]<='9') ||
(str[k] == 46 &&
( isdigit(str[k-1]) != 0 || isdigit(str[k+1]) != 0) ) ))
return -2; //wrong file content
k++;
}
}
j++;
if (j == ny)
{
j = 0;
i++;
}
}
fclose(fname);
}
else
{
return -1; //faild to open the file
}
return 1;
}
///////////////////////////////////////////////////////////////////////////////////////
//Load 2D matrix with int elements
///////////////////////////////////////////////////////////////////////////////////////
int load_2D_int(int **Tomb, int &nx, int &ny, CString &ut_nev)
{
FILE *fname;
char str[100];
int i = 0;
int j = 0;
if( (fname = fopen( ut_nev, "r" )) != NULL )
{
while ( fscanf(fname,"%s", &str) != EOF )
{
if (i==nx)
return -3; //wrong dimensions
Tomb[i][j] = atoi(str);
if (Tomb[i][j] == 0)
{
int k = 0;
while(str[k] != '\0')
{
if ( !( str[k]>='0' && str[k]<='9') )
return -2; //wrong file content
k++;
}
}
j++;
if (j == ny)
{
j = 0;
i++;
}
}
fclose(fname);
}
else
{
return -1; //faild to open the file
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -