summaryrefslogtreecommitdiff
path: root/example/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'example/main.c')
-rw-r--r--example/main.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/example/main.c b/example/main.c
new file mode 100644
index 0000000..bda4c89
--- /dev/null
+++ b/example/main.c
@@ -0,0 +1,61 @@
+#include <assert.h>
+#include <matfile.h>
+#include <stdio.h>
+#include <string.h>
+
+double floats[5] = {0.0, 1.0, 3.14, 2.72, 5.5};
+
+int main(void) {
+ FILE *fp = fopen("test.mat", "w");
+ if (fp == NULL) {
+ perror("fopen");
+ return -1;
+ }
+
+ // Write File Header
+ assert(write_header(fp));
+
+ // Setup Array Dimensions
+ int32_t dims[2] = {1, 5};
+ mData_t dim_data;
+ dim_data.data = (void *)&dims;
+ dim_data.tag.type = miINT32;
+ dim_data.tag.size = 8;
+
+ // Array Flags
+ mArrayFlags_t flags;
+ memset(&flags, 0, sizeof(flags));
+ flags.global = 0;
+ flags.complex = 0;
+ flags.logical = 0;
+ flags.class = mxDOUBLE_CLASS;
+
+ mData_t flags_data;
+ flags_data.tag.type = miUINT32;
+ flags_data.tag.size = 8;
+ flags_data.data = (void *)&flags;
+
+ // Name
+ mSmallData_t name;
+ name.tag.type = miINT8;
+ name.tag.size = 1;
+ name.data = 'A';
+
+ mData_t data;
+ data.tag.type = miDOUBLE;
+ data.tag.size = sizeof(floats);
+ data.data = (void *)floats;
+
+ mTag_t array;
+ array.type = miMATRIX;
+ array.size = 96;
+
+ fwrite((void *)&array, 1, sizeof(array), fp);
+ write_data(fp, flags_data);
+ write_data(fp, dim_data);
+ write_small_data(fp, name);
+ write_data(fp, data);
+
+ fclose(fp);
+ return 0;
+}