#include #include #include #include "bc_io.h" #include "lib.h" /* Here all routine to generate terminal oriented output is located */ void _qstmark(void) { /* prompt for terminal input */ putchar('?'); } void _nl(void) { _asschn(); _outnl(); } void _prinum(int i) { char buffer[40]; _asschn(); if (i >= 0) sprintf(buffer, " %d ", i); else sprintf(buffer, "-%d ", -i); _out(buffer); } void _str(double f, char* buffer) { register char* c = buffer; int eformat = 0; if (f >= 0) { if (f > 1.0e8) { eformat = 1; sprintf(buffer, " %e", f); } else sprintf(buffer, " %f", f); c++; } else { if (-f > 1.0e8) { eformat = 1; sprintf(buffer, "-%e", -f); } else sprintf(buffer, "-%f", -f); } if (!eformat) { for (; *c && *c != ' '; c++) ; c--; while (c > buffer && *c == '0') { *c = 0; c--; } if (*c == '.') *c = 0; } } void _prfnum(double f) { /* BASIC strings trailing zeroes */ char buffer[100]; char* c; _asschn(); c = buffer; _str(f, c); strcat(buffer, " "); _out(buffer); } void _prstr(String* str) { _asschn(); if (str == 0) _out(""); else _out(str->strval); }