home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / c / 12667 < prev    next >
Encoding:
Internet Message Format  |  1992-08-22  |  2.6 KB

  1. Path: sparky!uunet!cs.utexas.edu!uwm.edu!rutgers!mcdhup!pdnfido!erik
  2. From: erik@pdnfido.fidonet.org (Erik VanRiper)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Convert float to a string ?
  5. Message-ID: <1992Aug23.021013.2772@pdnfido.fidonet.org>
  6. Date: 23 Aug 92 02:10:13 GMT
  7. References: <1992Aug20.172112.1564@tin.monsanto.com> <1992Aug20.225133.12163@overload.lbl.gov> <chupchup.714358437@piggy>
  8. Sender: erik@pdnfido.fidonet.org
  9. Followup-To: poster
  10. Organization: The Source for Source Pub Access Unix
  11. Lines: 49
  12.  
  13. In article <chupchup.714358437@piggy> chupchup@ferkel.ucsb.edu (Robert Earl) writes:
  14. >prem@prem.lbl.gov (Shirdi R. Prem) writes:
  15. >
  16. >| In article <1992Aug20.172112.1564@tin.monsanto.com> bcschu@skws02.monsanto.com (Brett Schultz) writes:
  17. >| >prem@prem.lbl.gov (Shirdi R. Prem) writes:
  18. >| >: In article <1992Aug19.204417.13500@tin.monsanto.com> bcschu@skws02.monsanto.com (Brett Schultz) writes:
  19. >| >: 
  20. >| >:        sprintf(b,"%f\0",a);
  21. >| >:              ^^^^^^
  22. >| >: 
  23. >| >:     Are you sure you need a '\0' here............???
  24. >
  25. >| >Let me know if sprintf puts one there anyway, I wasn't sure.
  26. >
  27. >|     Yes. It does.
  28. >
  29. >No, it does NOT put one there - the '\0' is implicitly provided by the
  30. >C compiler whenever you mention a "..." double-quoted string.  sprintf
  31. >does check for the NUL, however, when reading the format string.  Once
  32. >it reaches the NUL and copies it to the target string (in this case,
  33. >b), it stops.
  34. >
  35. >If you were to somehow pass a non-NUL terminated string to sprintf, it
  36. >would likely go off into never-never land, copying arguments and
  37. >trying to find the zero character.  But '\0' is guaranteed to
  38. >terminate any string literal compiled into a C program, therefore the
  39. >strings are valid input to library functions such as sprintf.
  40.  
  41. Just to make an already dull conversation duller <grin>...  In the example
  42. above, (sprintf(b,"%f\0",a);), it does not matter if the \0 is after the %f,
  43. in the case of your argument above.  You could still manage to pass it a non-
  44. null terminated string, and it will happily barf all over the place.  If I
  45. remember correctly, things are evaluated left to right, so the string will 
  46. attempt to be placed into b, then terminated with the \0.  If the string
  47. being passed (a) is not null-terminated, the the \0 within the quotes becomes
  48. a waste of space, so to speak.  :-)
  49.  
  50. I think we are arguing the same side here, but I figured I would stick in my
  51. 2 cents to clear things up in my own demented way.  
  52.  
  53. Enjoy the rest of your weekend.
  54.  
  55.  
  56.  
  57.  
  58. -- 
  59. Like wow...  This be a .sig, eh? 
  60. GEEKS Anonymous - Join today!
  61. The Source for Source - Pub Access Unix.  (516) 968-7824 or (516) 666-5877
  62.