89 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include <stdlib.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <string.h>
 | 
						|
#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("<null>");
 | 
						|
	else
 | 
						|
		_out(str->strval);
 | 
						|
}
 |