Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site umcp-cs.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!godot!harvard!seismo!umcp-cs!chris From: chris@umcp-cs.UUCP (Chris Torek) Newsgroups: net.lang.c Subject: Re: define constants within strings Message-ID: <3752@umcp-cs.UUCP> Date: Fri, 1-Mar-85 15:08:00 EST Article-I.D.: umcp-cs.3752 Posted: Fri Mar 1 15:08:00 1985 Date-Received: Sun, 3-Mar-85 03:46:42 EST References: <8780@brl-tgr.ARPA> Organization: U of Maryland, Computer Science Dept., College Park, MD Lines: 68 Since the proposed ANSI standard allows things like #define FOO "bar" #define BAR "foo" char baz[] = FOO " the " BAR; I thought I'd take the opportunity to post this little program I wrote ages ago. ----------------------------------------------------------------------- static char sccsid[] = "@(#)string.c U of Maryland ACT 30-Oct-1982"; /* string -- combine adjacent C strings */ #include#define SQUOTE '\'' #define DQUOTE '"' #define BACKSLASH '\\' main () { register c; register char *p, *q; char buf[BUFSIZ]; while ((c = getchar ()) != EOF) { top: if (c == SQUOTE) { putchar (c); while ((c = getchar ()) != EOF) { putchar (c); if (c == BACKSLASH) putchar (getchar ()); else if (c == SQUOTE) break; } } else if (c == DQUOTE) { putchar (c); more: while ((c = getchar ()) != EOF) { if (c == BACKSLASH) { putchar (c); putchar (getchar ()); } else if (c == DQUOTE) break; else putchar (c); } p = q = buf; while ((c = getchar ()) == ' ' || c == '\t' || c == '\n') *p++ = c; if (c == DQUOTE) goto more; putchar (DQUOTE); while (q < p) putchar (*q++); goto top; } else putchar (c); } } -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 4251) UUCP: {seismo,allegra,brl-bmd}!umcp-cs!chris CSNet: chris@umcp-cs ARPA: chris@maryland