📄 load_save_file_data.cpp
字号:
#include "Load_Save_File_Data.h"
#include "Matrix.h"
#include <string.h>
#include <cctype>
///////////////////////////////////////////////////////////////////////////////////////
//Save 1D vectors with double elements
///////////////////////////////////////////////////////////////////////////////////////
int save_1D(double *Tomb, long n_x_a, long n_x_b, long n_t, char *ut_nev)
{
long i;
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
FILE *fp;
strcat(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%i", n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
fp = fopen(File_Name, "w+");
if (!fp)
{
free(File_Name);
return 2;
}
for (i = n_x_a; i < n_x_b; i++ )
{
fprintf(fp," %6.16f",Tomb[i]);
}
fclose(fp);
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 1D vectors with long elements
///////////////////////////////////////////////////////////////////////////////////////
int save_1D_long(long *Tomb, long n_x_a, long n_x_b, long n_t, char *ut_nev)
{
long i;
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
FILE *fp;
strcat(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%i", n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
fp = fopen(File_Name, "w+");
if (!fp)
{
free(File_Name);
return 2;
}
for (i = n_x_a; i < n_x_b; i++ )
{
fprintf(fp," %d",Tomb[i]);
}
fclose(fp);
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 1D vectors with double elements
///////////////////////////////////////////////////////////////////////////////////////
int save_1D_binary(double *Tomb, long nx, long n_t, char *ut_nev)
{
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
strcpy(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%i", n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
FILE *fp;
if ((fp=fopen(File_Name, "wb")) == NULL)
return 2;
else
{
fwrite(Tomb,sizeof(double),nx,fp);
fclose(fp);
}
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 2D matrix with double elements
///////////////////////////////////////////////////////////////////////////////////////
int save_2D(double **Tomb, long n_x_a, long n_x_b, long n_y_a, long n_y_b,
long n_t, char *ut_nev)
{
long i, j;
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
strcat(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%i", n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
FILE *fp;
if ((fp=fopen(File_Name, "w+")) ==NULL)
{
free(File_Name);
return 2;
}
else
{
for (i=n_x_a; i<n_x_b; i++)
{
for (j=n_y_a; j<n_y_b; j++)
{
fprintf(fp,"%6.12f ",Tomb[i][j]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 2D matrix with double elements in binary file
///////////////////////////////////////////////////////////////////////////////////////
int save_2D_binary(double **Tomb, long nx, long ny, long n_t, char *ut_nev)
{
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
strcat(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%i", n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
FILE *fp;
if ((fp=fopen(File_Name, "wb")) == NULL)
return 2;
else
{
fwrite(Tomb[0],sizeof(double),nx*ny,fp);
fclose(fp);
}
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 3D matrix with double elements in binary file
///////////////////////////////////////////////////////////////////////////////////////
int save_3D_binary(double ***Tomb, long nx, long ny, long nz, long n_t, char *ut_nev)
{
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
strcpy(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%dsz%dsz%d_%d",nx,ny,nz,n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
FILE *fp;
if ((fp=fopen(File_Name, "wb")) == NULL)
return 2;
else
{
long n = nx*ny*nz;
fwrite(Tomb[0][0],sizeof(double),n,fp);
fclose(fp);
}
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Reads 1D matrix with double elements from binary file
///////////////////////////////////////////////////////////////////////////////////////
int load_1D_binary(double *Tomb, long nx, char *ut_nev)
{
FILE *fp;
if ((fp=fopen(ut_nev, "rb")) == NULL)
return 2;
else
{
fread(Tomb,sizeof(double),nx,fp);
fclose(fp);
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Reads 2D matrix with double elements from binary file
///////////////////////////////////////////////////////////////////////////////////////
int load_2D_binary(double **Tomb, long nx, long ny, char *ut_nev)
{
FILE *fp;
if ((fp=fopen(ut_nev, "rb")) == NULL)
return 2;
else
{
fread(Tomb[0],sizeof(double),nx*ny,fp);
fclose(fp);
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Reads 3D matrix with double elements from binary file
///////////////////////////////////////////////////////////////////////////////////////
int load_3D_binary(double ***Tomb, long nx, long ny, long nz, char *ut_nev)
{
FILE *fp;
if ((fp=fopen(ut_nev, "rb")) == NULL)
return 2;
else
{
fread(Tomb[0][0],sizeof(double),nx*ny*nz,fp);
fclose(fp);
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save 2D matrix with long elements
///////////////////////////////////////////////////////////////////////////////////////
int save_2D_long(long **Tomb, long n_x_a, long n_x_b, long n_y_a, long n_y_b,
long n_t, char *ut_nev)
{
long i, j;
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
strcat(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%i", n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
FILE *fp;
if ((fp=fopen(File_Name, "w+")) ==NULL)
return 2;
else
{
for (i=n_x_a; i<n_x_b; i++)
{
for (j=n_y_a; j<n_y_b; j++)
{
fprintf(fp,"%d ",Tomb[i][j]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Load 2D matrix with double elements
///////////////////////////////////////////////////////////////////////////////////////
int load_2D(double **Tomb, long nx, long ny, char *ut_nev)
{
FILE *fname;
char str[100];
long i = 0;
long 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)
{
long 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 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Load 2D matrix with long elements
///////////////////////////////////////////////////////////////////////////////////////
int load_2D_long(long **Tomb, long nx, long ny, char * ut_nev)
{
FILE *fname;
char str[100];
long i = 0;
long 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] = atol(str);
if (Tomb[i][j] == 0)
{
long 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 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Load 1D matrix with long elements
///////////////////////////////////////////////////////////////////////////////////////
int load_1D_long(long *Tomb, long nx, char * ut_nev)
{
FILE *fname;
char str[100];
long i = 0;
if( (fname = fopen( ut_nev, "r" )) != NULL )
{
while ( fscanf(fname,"%s", &str) != EOF )
{
if (i==nx)
return 3; //wrong dimensions
Tomb[i] = atol(str);
if (Tomb[i] == 0)
{
long k = 0;
while(str[k] != '\0')
{
if ( !( str[k]>='0' && str[k]<='9') )
return 2; //wrong file content
k++;
}
}
i++;
}
fclose(fname);
}
else
{
return 1; //faild to open the file
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Load 1D matrix with double elements
///////////////////////////////////////////////////////////////////////////////////////
int load_1D_double(double *Tomb, long nx, char * ut_nev)
{
FILE *fname;
char str[100];
long i = 0;
if( (fname = fopen( ut_nev, "r" )) != NULL )
{
while ( fscanf(fname,"%s", &str) != EOF )
{
if (i==nx)
return 3; //wrong dimensions
Tomb[i] = atof(str);
if (Tomb[i] == 0)
{
long k = 0;
while(str[k] != '\0')
{
if ( !( str[k]>='0' && str[k]<='9') )
return 2; //wrong file content
k++;
}
}
i++;
}
fclose(fname);
}
else
{
return 1; //faild to open the file
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Load 3D Geom matrix with long elements
///////////////////////////////////////////////////////////////////////////////////////
int load_3D_Geom_long(long ***Tomb, long nx, long ny, long nz, char *ut_nev)
{
FILE *fname;
long i, j, k, n_x, n_y, n_z;
char str[100];
if( (fname = fopen( ut_nev, "r" )) != NULL )
{
long cik = 0;
while ( fscanf(fname,"%s", &str) != EOF )
{
//the first line contains the dimensions of the matrix
switch (cik)
{
case 0: //the x dimension
n_x = atoi(str);
if (n_x != nx)
{
//"wrong file content\n"
return 2;
}
cik = 1;
break;
case 1: //the y dimension
n_y = atoi(str);
if (n_y != ny)
{
//"wrong file content\n"
return 2;
}
cik = 2;
break;
case 2: //the z dimension
n_z = atoi(str);
if (n_z != nz)
{
//"wrong file content\n"
return 2;
}
cik = 3;
break;
case 3:
i = atoi(str);
if (i >= nx)
{
//"wrong file content\n"
return 2;
}
cik = 4;
break;
case 4:
j = atoi(str);
if (j >= ny)
{
//"wrong file content\n"
return 2;
}
cik = 5;
break;
case 5:
k = atoi(str);
if (k >= nz)
{
//"wrong file content\n"
return 2;
}
cik = 6;
break;
case 6:
Tomb[i][j][k] = atoi(str);
cik = 3;
break;
}
}
fclose(fname);
}
else
{
return 1; //"faild to open the file"
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save xy plane from 3D data structure
///////////////////////////////////////////////////////////////////////////////////////
int save_3D_xy(double ***Tomb, long n_x_a, long n_x_b, long n_y_a, long n_y_b,
long nz, long n_t, char *ut_nev)
{
long i, j;
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
FILE *fp;
strcat(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%d_%d_%d_%d_%d_%i_xy", n_x_a,n_x_b,n_y_a,n_y_b,nz,n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
if ((fp=fopen(File_Name, "w+")) ==NULL)
{
free(File_Name);
return 2;
}
else
{
for (i=n_x_a; i<n_x_b; i++)
{
for (j=n_y_a; j<n_y_b; j++)
{
fprintf(fp,"%6.12f ",Tomb[i][j][nz]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save xz plane from 3D data structure
///////////////////////////////////////////////////////////////////////////////////////
int save_3D_xz(double ***Tomb, long n_x_a, long n_x_b, long ny, long n_z_a, long n_z_b,
long n_t, char *ut_nev)
{
long i, k;
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
FILE *fp;
strcat(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%d_%d_%d_%d_%d_%i_xz", n_x_a,n_x_b,ny,n_z_a,n_z_b,n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
if ((fp=fopen(File_Name, "w+")) ==NULL)
{
free(File_Name);
return 2;
}
else
{
for (i=n_x_a; i<n_x_b; i++)
{
for (k=n_z_a; k<n_z_b; k++)
{
fprintf(fp,"%6.12f ",Tomb[i][ny][k]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
free(File_Name);
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//Save yz plane from 3D data structure
///////////////////////////////////////////////////////////////////////////////////////
int save_3D_yz(double ***Tomb, long nx, long n_y_a, long n_y_b, long n_z_a, long n_z_b,
long n_t, char *ut_nev)
{
long j, k;
char *File_Name = NULL;
File_Name =(char *) calloc(512,sizeof(char));
if (!File_Name)
{
return 1;
}
FILE *fp;
strcat(File_Name,ut_nev);
char buffer[256];
sprintf(buffer, "_%d_%d_%d_%d_%d_%i_yz", nx,n_y_a,n_y_b,n_z_a,n_z_b,n_t);
strcat(File_Name,buffer);
strcat(File_Name,".dat");
if ((fp=fopen(File_Name, "w+")) ==NULL)
{
free(File_Name);
return 2;
}
else
{
for (j=n_y_a; j<n_y_b; j++)
{
for (k=n_z_a; k<n_z_b; k++)
{
fprintf(fp,"%6.12f ",Tomb[nx][j][k]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
free(File_Name);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -