home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 9
/
FreshFishVol9-CD2.bin
/
bbs
/
util
/
cout-1.00.lha
/
Cout
/
Deutsch
/
cout.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-08-04
|
3KB
|
91 lines
#include <stream.h>
#include <string.h>
void usage ()
{
cout << "\ncout (c) by Harald Pehl in 1993\n"
"Synthax: cout [Zeichenkette]\n"
"In der Zeichenfolge <Zeichenkette> können diverse "
"Steuerelemente enthalten sein:\n\n"
"Aus C gebräuchliche:\n"
"\t\\a: Klingelzeichen \\b: Backspace\n"
"\t\\f: Seitenvorschub \\n: Zeilentrenner\n"
"\t\\r: Wagenrücklauf \\t: Tabulator\n"
"\t\\v: Vertikal-Tabulator \\\\: Gegenschrägstrich\n\n"
"Von mir hinzugefügte:\n"
"\t\\d: Text wird fett ausgegeben \\k: Text wird kursiv ausgegeben\n"
"\t\\u: Text wird unterstrichen \\i: Text wird inventiert\n"
"\t\\x: Schaltet alle eventuell eingestellten Modi aus\n\n"
"Wird keine <Zeichenkette> angegeben, gibt cout eine Leerzeile aus.\n\n"
}
void main (int argc, char **argv)
{
if (argc == 2)
{
char *arg = *++argv;
if (*arg == '?')
{
usage ();
return;
}
char *str = 0;
int a, s, size = strlen (arg);
for (a = 0 ; a < size ; a++) // Stelle die Länge
{ // des Strings arg = *++argv fest...
if (*(arg+a) == 92)
{
switch (*(arg+a+1))
{
case 'd':
case 'k':
case 'u':
case 'i':
case 'x': size += 3;
}
}
}
str = new char[size]; // ...und fordere
if (str == 0) // dementsprechend
{ // Speicher für die Kopie str an
cout << "Zeichenkette zu lang !!\n";
return;
}
for (a = 0, s = 0 ; a < size ; a++, s++) // Untersuche arg auf
{ // Steuerzeichen
if (*(arg+a) == 92) // und kopiere ihn
{ // inklusive Steuerzeichen
switch (*(arg+a+1)) // nach str
{
case 'a': *(str+s) = '\a'; a++; break;
case 'b': *(str+s) = '\b'; a++; break;
case 'f': *(str+s) = '\f'; a++; break;
case 'n': *(str+s) = '\n'; a++; break;
case 'r': *(str+s) = '\r'; a++; break;
case 't': *(str+s) = '\t'; a++; break;
case 'v': *(str+s) = '\v'; a++; break;
case 92 : *(str+s) = '\\'; a++; break;
case 'd': strcat (str, "\x9b""1m"); a++; s+=2; break;
case 'k': strcat (str, "\x9b""3m"); a++; s+=2; break;
case 'u': strcat (str, "\x9b""4m"); a++; s+=2; break;
case 'i': strcat (str, "\x9b""7m"); a++; s+=2; break;
case 'x': strcat (str, "\x9b""0m"); a++; s+=2; break;
default : break;
}
}
else
*(str+s) = *(arg+a);
}
cout << str;
delete [] str;
}
else if (argc == 1)
cout << "\n";
else
usage ();
}