Mercurial > baum
changeset 7:6a6152cf63f7
new implementation of the read input function
author | meillo@marmaro.de |
---|---|
date | Sat, 09 Feb 2008 11:57:16 +0100 |
parents | ab87b154a96b |
children | 495a56e706dc |
files | baum.c |
diffstat | 1 files changed, 41 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/baum.c Fri Feb 08 21:44:07 2008 +0100 +++ b/baum.c Sat Feb 09 11:57:16 2008 +0100 @@ -182,38 +182,63 @@ /* read input */ void read_input(char* filename) { - FILE* fp; - char c; - char* line; - int indent; - char* name; + FILE* file; + int c; + char* cp; + int indent = 0; + char name[256]; int value; - fp = fopen(filename, "r"); - indent = 0; + file = fopen(filename, "r"); + - while ((c = getc(fp)) != EOF) { + while ((c = getc(file)) != EOF) { + if (c == '#') { + printf("c\n"); + while ((c = getc(file)) != '\n') { + } + } + if (c == ' ' || c == '\t') { indent++; - } else if (c == '(') { - fscanf(fp, "%d", &value); - } else if (c == '\n') { + } - if (strcmp(name, "") != 0) { - printf("\nindent: %d\nname: %s\nvalue: %d\n", indent, name, value); + if (c == '\n') { + if (strlen(name) > 0) { + printf(" %d - %s - %d\n", indent, name, value); + /* + */ + } else { + printf("comment\n"); } indent = 0; strcpy(name, ""); value = 0; - } else { - fscanf(fp, "%[a-z]", name); } + + if (c >= 'a' && c <= 'z') { + int i = 1; + name[0] = (char) c; + while ((c = getc(file)) != '(') { + /*putc(c, stdout);*/ + name[i] = (char) c; + i++; + } + name[i] = '\0'; + } + + if (c == '(') { + fscanf(file, "%d)", &value); + } + } + + fclose(file); } /* main */ int main(int argc, char* argv[]) { - unsigned char shell_return; + unsigned char shell_return = 0; /* init();