home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / c / 12390 < prev    next >
Encoding:
Text File  |  1992-08-16  |  1.7 KB  |  46 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!elroy.jpl.nasa.gov!usc!sol.ctr.columbia.edu!eff!ibmpcug!dylan
  3. From: dylan@ibmpcug.co.uk (Matthew Farwell)
  4. Subject: Re: Allocate memory to typed in string, How?
  5. Organization: The IBM PC User Group, UK.
  6. Date: Sun, 16 Aug 1992 14:13:54 GMT
  7. Message-ID: <Bt2y77.4Dn@ibmpcug.co.uk>
  8. References: <MJN.92Aug9012538@pseudo.uucp> <1992Aug13.184911.376@wyvern.twuug.com> <1992Aug15.201359.3601@athena.mit.edu>
  9. Lines: 35
  10.  
  11. In article <1992Aug15.201359.3601@athena.mit.edu> scs@adam.mit.edu (Steve Summit) writes:
  12. >P.S.  Please, don't anyone get too steamed if it seems like I'm
  13. >      branding you as "too lazy and/or stupid to do any better."
  14. >      I frequently write little throwaway utilities with
  15. >      arbitrary limits, because I'm lazy, too.  You can perform a
  16. >      cost/benefit analysis which may show that it's not
  17. >      worthwhile to accept arbitrarily-large inputs: in a way,
  18. >      that's just institutionalized laziness, but if the analysis
  19. >      is accurate and well-founded it may well be perfectly
  20. >      reasonable and nothing to be ashamed of.
  21.  
  22. I submit that it is very easy to write code which does not have line
  23. length limits.  To take the example of:
  24.  
  25.     char buf[512];
  26.  
  27.     while (fgets(buf, sizeof buf, stdin)) {
  28.         /* do something with buf */
  29.     }
  30.  
  31. This is very easy to translate, all you need is something like fgetmfs
  32. from the c-news distribution..., ie
  33.  
  34. #define fgetms(fp) fgetmfs(fp, -1, CONT_NO)    /* unbounded read */
  35.  
  36.     char *buf;
  37.  
  38.     while (buf = fgetms(stdin)) {
  39.         /* do something with buf */
  40.     }
  41.  
  42. This one small change does wonders.  All you need to take the time to do
  43. is get & compile fgetmfs, and shove it into a library somewhere.
  44.  
  45. Dylan.
  46.