1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
/* Module: Strings2 */
#include <string2.h>
void strfill (char *Zeile, int Laenge, char Zeichen)
/* Fllt Zeile mit Laenge Zeichen */
{
for (; Laenge; Laenge--, Zeile++)
*Zeile = Zeichen;
*Zeile = 0;
}
void strdel (char *Zeile)
/* Ein Zeichen (X) wird gelscht. Aufruf: &Zeile[X] */
{
Zeile++;
for (;*Zeile; Zeile++)
*(Zeile - 1) = *Zeile;
*(Zeile - 1) = 0;
} /* strdel */
void strins (char *Zeile, char Zeichen)
/* Ein Zeichen wird an die Stelle (X) eingefgt.
Aufruf: &Zeile[X], Zeichen */
{
char *Hilf = Zeile;
for (;*Hilf; Hilf++); /* Hilf ans Ende der Zeile setzen */
for (; (Hilf+1) != Zeile; Hilf--)
*(Hilf + 1) = *Hilf;
*Zeile = Zeichen;
} /* strins */
void strextend (char *Zeile, int n)
/* Der String Zeile wird auf "n" Zeichen ohne abschlieendes "\0"
gestreckt; es werden Leerzeichen angehangen. Ist der String lnger,
bleibt er dies auch. */
{
char *Hilf = Zeile;
for (;*Hilf; Hilf++); /* Hilf ans Ende der Zeile setzen */
for (; Hilf - Zeile < n; Hilf++)
*Hilf = ' ';
*Hilf = '\0';
} /* strextend */
void strcut (char *Zeile)
/* Am Ende der Zeile stehende Leerzeichen werden abgeschnitten */
{
char *Hilf = Zeile;
for (;*Hilf; Hilf++); /* Hilf ans Ende der Zeile setzen */
for (Hilf--;*Hilf == ' ';Hilf--);
*(Hilf + 1) = '\0';
};
void strrpl ( char *Zeile, char z1, char z2 )
/* In der Zeichenfolge "Zeile" werden alle z1 durch z2 ersetzt */
{
for ( ; *Zeile; Zeile++ )
{
if ( *Zeile == z1 )
*Zeile = z2;
};
}; /* strrpl */
char *strchri ( const char *zfolge, char zeichen )
/* Sucht solange rckwrts nach dem Zeichen, bis dieses gefunden wurde.
Darum !Achtung!, das Zeichen mu vorkommen, Absturzgefahr.
Ergebnis: Ein Zeiger zu diesem Zeichen */
{
char *zeiger;
for ( zeiger = (char *) zfolge; *zeiger == zeichen; zeiger-- );
return zeiger;
}; /* strchri */
void strsort ( const unsigned char *zfolge, char *erg )
/* Konvertiert den String zfolge in einen sortierfhigen String.
1. Alle Buchstaben werden in Kleinbuchstaben umgewandelt.
2. Umlaute verlieren ihre Punkte ( z.B. --> a )
3. --> s
4. Alle anderen Zeichen werden gestrichen.
5. erg mu mindestens so gro wie zfolge dimensioniert sein */
{
int i;
for ( ; *zfolge; *zfolge++ ) {
if ( *zfolge >= 'a' && *zfolge <= 'z' ) {
*erg = *zfolge; erg++; }
else if ( *zfolge >= 'A' && *zfolge <= 'Z' ) {
*erg = *zfolge + 32; erg++; }
else if ( *zfolge == '' || *zfolge == '' ) {
*erg = 'a'; erg++; }
else if ( *zfolge == '' || *zfolge == '' ) {
*erg = 'o'; erg++; }
else if ( *zfolge == '' || *zfolge == '' ) {
*erg = 'u'; erg++; }
else if ( *zfolge == '' ) {
*erg = 's'; erg++; }
}; /* for */
*erg = '\0';
} /* void strsort */
|