diff options
Diffstat (limited to 'src/io.c')
-rw-r--r-- | src/io.c | 54 |
1 files changed, 54 insertions, 0 deletions
@@ -115,6 +115,60 @@ int read_u(_Complex double* u, int K1, int K2, FILE* file){ return 0; } +// write final entry to file in binary format +int write_u_bin(_Complex double* u, int K1, int K2, FILE* file){ + // do nothing if there is no file + if(file==NULL){ + return 0; + } + + fwrite(u, sizeof(_Complex double), (K1+1)*(2*K2+1), file); + + return 0; +} + +// read u from file in binary format +int read_u_bin(_Complex double* u, int K1, int K2, FILE* file){ + char c; + int ret; + + // do nothing if there is no file + if(file==NULL){ + return 0; + } + + // seek past initial comments + while(true){ + ret=fscanf(file, "%c", &c); + if (ret==1 && c=='#'){ + // find endline + while(true){ + ret=fscanf(file, "%c", &c); + // end of file + if (ret==0) { + // no data + return 0; + } + + if (c=='\n'){ + break; + } + } + } else { + if (ret==1){ + // backtrack + fseek(file, -sizeof(char), SEEK_CUR); + } + // past comments + break; + } + } + + fread(u, sizeof(_Complex double), (K1+1)*(2*K2+1), file); + + return 0; +} + // remove an entry from params string (inplace) int remove_entry( char* param_str, |