diff options
| author | ziejd2 | 2017-09-14 15:39:41 -0500 |
|---|---|---|
| committer | ziejd2 | 2017-09-14 15:57:50 -0500 |
| commit | c4f926438dcb8abe805e910399940f79ff643c4b (patch) | |
| tree | 3146d05ada5cf4b48d9bdd16c1baa498e8df7192 /sourcecodes/k-best/src/files.c | |
| parent | 57ebf49403b75dcf8482d174b59f7fd2a961d98e (diff) | |
| download | BNW-c4f926438dcb8abe805e910399940f79ff643c4b.tar.gz | |
Add files via upload
Diffstat (limited to 'sourcecodes/k-best/src/files.c')
| -rw-r--r-- | sourcecodes/k-best/src/files.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/sourcecodes/k-best/src/files.c b/sourcecodes/k-best/src/files.c new file mode 100644 index 00000000..3227f63c --- /dev/null +++ b/sourcecodes/k-best/src/files.c @@ -0,0 +1,59 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include "files.h" + +int nof_digits(int n) +{ + int c=0; + do { + c += 1; + n /= 10; + } while(n); + return c; +} + +int nof_lines(char* filename) { + int nof_lines = 0; + FILE* f = fopen(filename,"r"); + int c = 0; + while(EOF != (c=fgetc(f))) + if(c=='\n') ++nof_lines; + fclose(f); + return nof_lines; +} + +char* create_fn(char* dirname, int i, char* ext) +{ char* fn = malloc((strlen(dirname)+1+nof_digits(i)+strlen(ext)+1) + *sizeof(char)); + sprintf(fn,"%s/%d%s", dirname,i,ext); + return fn; +} + +FILE* open_file(char* dirname, int i, char* ext, char* mode) +{ + FILE* f; + char* fn = create_fn(dirname, i, ext); + sprintf(fn,"%s/%d%s", dirname,i,ext); + f = fopen(fn, mode); + free(fn); + return f; +} + +FILE** open_files(int nof_vars, char* dirname, char* ext, char* mode) +{ + FILE** files = malloc(nof_vars * sizeof(FILE*)); + int i; + for(i=0; i<nof_vars; ++i){ + files[i] = open_file(dirname, i, ext, mode); + } + return files; +} + +void free_files(int nof_vars, FILE** files){ + int i; + for(i=0; i<nof_vars; ++i) fclose(files[i]); + free(files); +} + |
