Xref: utzoo comp.sys.m6809:710 comp.lang.c:8051 Path: utzoo!mnetor!uunet!husc6!hao!boulder!sunybcs!ugfailau From: ugfailau@sunybcs.uucp (Fai Lau) Newsgroups: comp.sys.m6809,comp.lang.c Subject: Re: Don't use Scanf() Message-ID: <9241@sunybcs.UUCP> Date: 12 Mar 88 08:15:49 GMT References: <2401@ihwpt.ATT.COM> <320@c10sd1.StPaul.NCR.COM> <1185@ucsfcca.ucsf.edu> Sender: nobody@sunybcs.UUCP Reply-To: ugfailau@sunybcs.UUCP (Fai Lau) Organization: SUNY/Buffalo Computer Science Lines: 55 Keywords: C stdio library In article <1185@ucsfcca.ucsf.edu> roland@rtsg.lbl.gov (Roland McGrath) writes: >One real stupidity I've seen many, many times is the >over-use of printf. The printf functions have their uses, >and they do their job quite well, but please know what these >uses are!! C'mon!!! Is it really an issue? >For example: > printf("Hello world!\n"); >Haven't you ever heard of puts???? > puts("Hello world!"); /* note the newline is appended */ I can't imagine any reasonably competant C compiler not generating the almost same codes for both cases. >or > printf("hi"); >try fputs: > fputs("hi", stdout); /* no newline appended */ >What's that? Oh, now you have to include so >you can get the proper declarations of all these functions anyway? >Poor baby! should be included in mostly every program just so that when you do need it you have it around. It's not gonna give you a bigger or slower program. >And the ultimate stupidity: > printf("\n"); >Get a brain!!!!! You're using the function that can do complex >data formatted output to write one bleeping character!!!!! >Try > putchar('\n'); >If you include , this will probably end up being a macro >that will write it out very fast. > >I have even seen: > sprintf(buf, "constant string"); >Hey, Mr. Power-Programmer, ever heard of strcpy???? Let's face it. The best way to give efficiency to a program is to write your own macro to handle file I/O and strings. Macros like strcpy are too general if you want to be picky. For example, if you want to print a string fast, you would write a routine that uses only putc with no format capacity and no error checking whatsoever, and forget about printf. Most of what you said are true. But if one has to be as picky as you suggest, then let's forget about stdio.h and strings.h and write everything from the ground up. Fai Lau SUNY at Buffalo (The Arctic Wonderland) UU: ..{rutgers,ames}!sunybcs!ugfailau BI: ugfailau@sunybcs INT: ugfailau@joey.cs.buffalo.EDU