life.c
changeset 0 af501b0c1716
child 8 96d16dfe787a
new file mode 100644
--- /dev/null
+++ b/life.c
@@ -0,0 +1,118 @@
+/**
+ *     $Id$
+ * $Source$
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define MAX 12
+
+int read_file (char **);
+int init_life (char **);
+void free_life (char **);
+void show_life (char **);
+
+int read_file (char **arena)
+{
+    int i, j;
+    char org;
+
+    char file[80];
+    FILE *inp = NULL;
+
+    while (inp == NULL) {
+        printf ("Please enter the file name>> ");
+        if (scanf ("%s", file) < 1)
+			return -1;
+
+        inp = fopen (file, "r");
+    }
+
+    for (i = 0; i < MAX; i++) {
+        printf ("Reading Line %3d: ", i);
+        for (j = 0; j < MAX; j++) {
+            if (feof (inp)) {
+                printf ("EOF detected\n");
+                return fclose (inp);
+            }
+
+            if ( (fscanf (inp, "%c ", &org)) < 1 )
+				return -1;
+
+            arena[i][j] = org;
+            printf ("%c ", arena[i][j]);
+        }
+        printf ("\n");
+    }
+
+    return fclose (inp);
+}
+
+int init_life (char **arena)
+{
+    int i, j;
+
+    for (i = 0; i < MAX; i++) {
+        if ((arena[i] = malloc (MAX + 1)) == NULL)
+            return -1;
+		for (j=0;j<MAX;j++)
+			arena[i][j] = '.';
+    }
+
+    for (i = 0; i < MAX; i++) {
+        arena[0][i] = '-';
+        arena[MAX - 1][i] = '-';
+        arena[i][0] = '|';
+        arena[i][MAX - 1] = '|';
+        printf ("Initialize: %d\n", i);
+    }
+
+    if ((read_file (arena) == EOF)) {
+        printf ("\nread_file: ERROR\n");
+        return -1;
+    }
+
+    return 0;
+}
+
+void show_life (char **arena)
+{
+    int i, j;
+
+    for (i = 0; i < MAX; i++) {
+        for (j = 0; j < MAX; j++) {
+            printf ("%c", arena[i][j]);
+        }
+        printf ("\n");
+    }
+}
+
+void free_life (char **arena)
+{
+    int i;
+
+    if (arena == NULL)
+        return;
+
+    for (i = 0; i < MAX; i++) {
+        if (arena[i] != NULL)
+            free (arena[i]);
+    }
+
+}
+
+int main (int argc, char **argv)
+{
+    char *arena[MAX];
+
+	if (argc > 2)
+		printf("Usage: %s\n", argv[0]);
+
+    if (init_life (arena) == 0)
+    	show_life (arena);
+    free_life (arena);
+
+    return 0;
+}