about summary refs log tree commit diff
path: root/sourcecodes/k-best/src/files.c
diff options
context:
space:
mode:
authorziejd22017-09-14 15:39:41 -0500
committerziejd22017-09-14 15:57:50 -0500
commitc4f926438dcb8abe805e910399940f79ff643c4b (patch)
tree3146d05ada5cf4b48d9bdd16c1baa498e8df7192 /sourcecodes/k-best/src/files.c
parent57ebf49403b75dcf8482d174b59f7fd2a961d98e (diff)
downloadBNW-c4f926438dcb8abe805e910399940f79ff643c4b.tar.gz
Add files via upload
Diffstat (limited to 'sourcecodes/k-best/src/files.c')
-rw-r--r--sourcecodes/k-best/src/files.c59
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);
+}
+