Xref: utzoo comp.sources.games.bugs:901 comp.lang.c:19885 Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!cs.utexas.edu!uunet!mcvax!ukc!dcl-cs!gdt!ccsmm From: ccsmm@gdt.bath.ac.uk (Martin Maclaren) Newsgroups: comp.sources.games.bugs,comp.lang.c Subject: Re: vsprintf undefined Keywords: vsprintf varargs Message-ID: <1989Jul12.190205.17600@gdt.bath.ac.uk> Date: 12 Jul 89 19:02:05 GMT References: <3171@puff.UUCP> Organization: University of Bath, England Lines: 56 kschnitz@puff.UUCP (Soccer Stud) writes: >Help! This function came with the tetris game I got for Unix based >machines. The problem is vsprintf is undefined using my C libraries. >Does anyone have a simple solution? Please post the answer because >others have had the same problem. Thanks in advance. > ... >/*VARARGS*/ >char *form (va_alist) > va_dcl >{ > va_list pvar; > char *fmt_string; > static char result[LINELEN]; > > va_start (pvar); > fmt_string = va_arg (pvar, char*); > (void) vsprintf (result, fmt_string, pvar); > va_end (pvar); > return (result); >} How about the following.... /*VARARGS*/ char *form (va_alist) va_dcl { va_list pvar; char *fmt_string; static char result[LINELEN]; FILE b; va_start (pvar); fmt_string = va_arg (pvar, char*); /* (void) vsprintf (result, fmt_string, pvar); */ b._flag = _IOWRT|_IOSTRG; b._ptr = result; b._cnt = LINELEN; _doprnt(fmt_string, pvar, &b); putc('\0', &b); va_end (pvar); return (result); } Works fine for me. Martin.