print.c 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "bc_string.h"
  2. #include "bc_io.h"
  3. /* $Id$ */
  4. /* Here all routine to generate terminal oriented output is located */
  5. _qstmark()
  6. {
  7. /* prompt for terminal input */
  8. putchar('?');
  9. }
  10. _nl()
  11. {
  12. _asschn();
  13. _outnl();
  14. }
  15. _prinum(i)
  16. int i;
  17. {
  18. char buffer[40];
  19. _asschn();
  20. if(i>=0)
  21. sprintf(buffer," %d ",i);
  22. else sprintf(buffer,"-%d ",-i);
  23. _out(buffer);
  24. }
  25. _str(f,buffer)
  26. double f;
  27. char *buffer;
  28. {
  29. register char *c = buffer;
  30. int eformat = 0;
  31. if( f>=0){
  32. if( f> 1.0e8) {
  33. eformat = 1;
  34. sprintf(buffer," %e",f);
  35. }
  36. else sprintf(buffer," %f",f);
  37. c++;
  38. }else {
  39. if(-f> 1.0e8) {
  40. eformat = 1;
  41. sprintf(buffer,"-%e",-f);
  42. }
  43. else sprintf(buffer,"-%f",-f);
  44. }
  45. if (! eformat) {
  46. for( ; *c && *c!= ' ';c++) ;
  47. c--;
  48. while( c>buffer && *c== '0')
  49. {
  50. *c= 0;c--;
  51. }
  52. if( *c=='.') *c=0;
  53. }
  54. }
  55. _prfnum(f)
  56. double f;
  57. {
  58. /* BASIC strings trailing zeroes */
  59. char buffer[100];
  60. char *c;
  61. _asschn();
  62. c= buffer;
  63. _str(f,c);
  64. strcat(buffer," ");
  65. _out(buffer);
  66. }
  67. _prstr(str)
  68. String *str;
  69. {
  70. _asschn();
  71. if( str==0) _out("<null>");
  72. else _out(str->strval);
  73. }