示例#1
0
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);
}
示例#2
0
/* 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);
}
示例#3
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;
}
示例#5
0
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);
}
示例#6
0
文件: readobj.c 项目: NREL/Radiance
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
}