void cvobject( /* convert an object */ char *fname, FILE *fin ) { extern char *fgetword(); char buf[128], typ[16], nam[128]; int i, n; register int j; if (fgetword(buf, sizeof(buf), fin) == NULL || fgetword(typ, sizeof(typ), fin) == NULL || fgetword(nam, sizeof(nam), fin) == NULL) goto readerr; if (!strcmp(typ, "polygon")) for (j = 0; j < nmarkers; j++) if (!strcmp(buf, marker[j].modin)) { replace(fname, &marker[j], nam, fin); return; } putchar('\n'); fputword(buf, stdout); printf(" %s ", typ); fputword(nam, stdout); putchar('\n'); if (!strcmp(typ, "alias")) { /* alias special case */ if (fgetword(buf, sizeof(buf), fin) == NULL) goto readerr; putchar('\t'); fputword(buf, stdout); putchar('\n'); return; } for (i = 0; i < 3; i++) { /* pass along arguments */ if (fscanf(fin, "%d", &n) != 1) goto readerr; printf("%d", n); for (j = 0; j < n; j++) { if (fgetword(buf, sizeof(buf), fin) == NULL) goto readerr; if (j%3 == 0) putchar('\n'); putchar('\t'); fputword(buf, stdout); } putchar('\n'); } return; readerr: fprintf(stderr, "%s: (%s): read error for %s \"%s\"\n", progname, fname, typ, nam); }
/* Get a vector from stdin */ int getvec(FVECT vec) { float vf[3]; double vd[3]; char buf[32]; int i; switch (inpfmt) { case 'a': /* ascii */ for (i = 0; i < 3; i++) { if (fgetword(buf, sizeof(buf), stdin) == NULL || !isflt(buf)) return(-1); vec[i] = atof(buf); } break; case 'f': /* binary float */ if (fread((char *)vf, sizeof(float), 3, stdin) != 3) return(-1); VCOPY(vec, vf); break; case 'd': /* binary double */ if (fread((char *)vd, sizeof(double), 3, stdin) != 3) return(-1); VCOPY(vec, vd); break; default: error(CONSISTENCY, "botched input format"); } return(0); }
int main() { FILE *f = stdin; // f = fopen("/home/Ondra/ahoj1.txt", "r"); // smazat char string[MAX_LEN]; int len; htable_t* table = htable_init(HTABLE_SIZE); htable_listitem *item; while ( (len = fgetword(string, MAX_LEN, f)) != 0 ) { if((item = htable_lookup(table, string)) == NULL) { fprintf(stderr, "Chyba pri alokaci pameti.\n"); return EXIT_FAILURE; } } // fclose(f); //smazat htable_iterator b = htable_begin(table); htable_iterator *bg = &b; htable_iterator end = htable_end(table); while( !htable_iter_eq(bg, &end) ) { if(htable_iter_deref(bg) == NULL) break; printf("%s\t%d\n", bg->ptr->key, bg->ptr->data); bg = htable_iter_next(bg); } if(end.ptr != NULL) printf("%s\t%d\n", end.ptr->key, end.ptr->data); // Uklid haldu htable_free(table); return EXIT_SUCCESS; }
/** * Zaciatok programu */ int main(void) { Th_table *htable = htable_init(TABLESIZE); if (htable == NULL) printError("Nepodarilo sa alokovat pamet pre hash table!", htable); //alokujem si do ktoreho budem ukladat slova z funkcie fgetword char *word = (char *)calloc(WORDLENGTHMAX, sizeof(char)); if (word == NULL) printError("Nepodarilo sa alokovat pamet pre pole!", htable); Thtable_listitem *item = NULL; //nacitanie slov do hash table while(fgetword(word, WORDLENGTHMAX, stdin) != 0) { item = htable_lookup(htable, word); if (item == NULL) { free(word); printError("Nepodarilo sa alokovat pamet pre novu polozku!", htable); } //pocita vyskity slova item->data++; } //vypis slovo pocetVyskitov ///////////////////////////////////////////// //nastavim iterator na prvu polozku Thtable_iterator iteratorBegin = htable_begin(htable); //nastavim iterator na poslednu polozku Thtable_iterator iteratorEnd = htable_end(htable); //vypis key data while (htable_iter_eq(iteratorBegin, iteratorEnd) == false) { item = htable_iter_deref(iteratorBegin); printf("%s\t%d\n", item->key, item->data); iteratorBegin = htable_iter_next(iteratorBegin); } //uvolnit alokovane polia.. htable_free(htable); free(word); return EXIT_SUCCESS; }
void rad2mgf( /* convert a Radiance file to MGF */ char *inp ) { char buf[512]; char mod[128], typ[32], id[128], alias[128]; FUNARGS fa; register FILE *fp; register int c; if (inp == NULL) { inp = "standard input"; fp = stdin; } else if (inp[0] == '!') { if ((fp = popen(inp+1, "r")) == NULL) { fputs(inp, stderr); fputs(": cannot execute\n", stderr); exit(1); } } else if ((fp = fopen(inp, "r")) == NULL) { fputs(inp, stderr); fputs(": cannot open\n", stderr); exit(1); } printf("# Begin conversion from: %s\n", inp); while ((c = getc(fp)) != EOF) switch (c) { case ' ': /* white space */ case '\t': case '\n': case '\r': case '\f': break; case '#': /* comment */ if (fgets(buf, sizeof(buf), fp) != NULL) printf("# %s", buf); break; case '!': /* inline command */ ungetc(c, fp); fgetline(buf, sizeof(buf), fp); rad2mgf(buf); break; default: /* Radiance primitive */ ungetc(c, fp); if (fgetword(mod, sizeof(mod), fp) == NULL || fgetword(typ, sizeof(typ), fp) == NULL || fgetword(id, sizeof(id), fp) == NULL) { fputs(inp, stderr); fputs(": unexpected EOF\n", stderr); exit(1); } unspace(mod); unspace(id); if (!strcmp(typ, "alias")) { strcpy(alias, "EOF"); fgetword(alias, sizeof(alias), fp); unspace(alias); newmat(id, alias); } else { if (!readfargs(&fa, fp)) { fprintf(stderr, "%s: bad argument syntax for %s \"%s\"\n", inp, typ, id); exit(1); } cvtprim(inp, mod, typ, id, &fa); freefargs(&fa); } break; } printf("# End conversion from: %s\n", inp); if (inp[0] == '!') pclose(fp); else fclose(fp); }
void getobject( /* read the next object */ char *name, FILE *fp ) { #define OALIAS -2 OBJECT obj; char sbuf[MAXSTR]; int rval; OBJREC *objp; if ((obj = newobject()) == OVOID) error(SYSTEM, "out of object space"); objp = objptr(obj); /* get modifier */ strcpy(sbuf, "EOF"); fgetword(sbuf, MAXSTR, fp); if (strchr(sbuf, '\t')) { sprintf(errmsg, "(%s): illegal tab in modifier \"%s\"", name, sbuf); error(USER, errmsg); } if (!strcmp(sbuf, VOIDID)) objp->omod = OVOID; else if (!strcmp(sbuf, ALIASMOD)) objp->omod = OALIAS; else if ((objp->omod = modifier(sbuf)) == OVOID) { sprintf(errmsg, "(%s): undefined modifier \"%s\"", name, sbuf); error(USER, errmsg); } /* get type */ strcpy(sbuf, "EOF"); fgetword(sbuf, MAXSTR, fp); if ((objp->otype = otype(sbuf)) < 0) { sprintf(errmsg, "(%s): unknown type \"%s\"", name, sbuf); error(USER, errmsg); } /* get identifier */ sbuf[0] = '\0'; fgetword(sbuf, MAXSTR, fp); if (strchr(sbuf, '\t')) { sprintf(errmsg, "(%s): illegal tab in identifier \"%s\"", name, sbuf); error(USER, errmsg); } objp->oname = savqstr(sbuf); /* get arguments */ if (objp->otype == MOD_ALIAS) { OBJECT alias; strcpy(sbuf, "EOF"); fgetword(sbuf, MAXSTR, fp); if ((alias = modifier(sbuf)) == OVOID) { sprintf(errmsg, "(%s): bad reference \"%s\"", name, sbuf); objerror(objp, USER, errmsg); } if (objp->omod == OALIAS || objp->omod == objptr(alias)->omod) { objp->omod = alias; } else { objp->oargs.sarg = (char **)malloc(sizeof(char *)); if (objp->oargs.sarg == NULL) error(SYSTEM, "out of memory in getobject"); objp->oargs.nsargs = 1; objp->oargs.sarg[0] = savestr(sbuf); } } else if ((rval = readfargs(&objp->oargs, fp)) == 0) { sprintf(errmsg, "(%s): bad arguments", name); objerror(objp, USER, errmsg); } else if (rval < 0) { sprintf(errmsg, "(%s): error reading scene", name); error(SYSTEM, errmsg); } if (objp->omod == OALIAS) { sprintf(errmsg, "(%s): inappropriate use of '%s' modifier", name, ALIASMOD); objerror(objp, USER, errmsg); } /* initialize */ objp->os = NULL; insertobject(obj); /* add to global structure */ #undef OALIAS }