Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!tut.cis.ohio-state.edu!ucbvax!hplabs!hplred!vongease From: vongease@hplred.HP.COM (Terry Von Gease) Newsgroups: comp.lang.c Subject: Re: Printing plural forms. Message-ID: <810002@hplred.HP.COM> Date: 26 Feb 91 21:23:59 GMT References: <1991Feb19.104810.549@ZYX.SE> Organization: Hewlett Packard Labs, Palo Alto CA Lines: 31 >>> We all have seen and, in various degrees, been irritated by texts such >>> as: >>> 1 files were copied >>> when it should have been: >>> 1 file was copied >>> >>> I'd like to know: when programming, how do you avoid such errors? > >In article <3331.27c23984@iccgcc.decnet.ab.com>, >I stuck my coding pencil in my ear: >> printf("%d error%s copied\n", nfiles, nfiles?"s were":" was"); >> or >> printf("files copied: %d\n", nfiles); > >Several persons emailed to point out one or more of the the obvious errors >in the first one. I would correct it to > printf("%d file%s copied\n", nfiles, nfiles=1?" was":"s were"); >This assumes that "0 files were copied" is correct. For that reason, and >because it's less susceptible to bonehead errors like mine, I prefer the >second form, which gives "files copied: 0", "files copied: 1", "files >copied: 2". > and further compounding of a bonehead error... > printf("%d file%s copied\n", nfiles, nfiles=1?" was":"s were"); ^^^^^^ how about ... nfiles==1?... instead? Terry