diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/asc2tex2/string2.c |
Initial commit
Diffstat (limited to 'support/asc2tex2/string2.c')
-rw-r--r-- | support/asc2tex2/string2.c | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/support/asc2tex2/string2.c b/support/asc2tex2/string2.c new file mode 100644 index 0000000000..de3db58ccd --- /dev/null +++ b/support/asc2tex2/string2.c @@ -0,0 +1,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 gel”scht. 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 abschlieáendes "\0" + gestreckt; es werden Leerzeichen angehangen. Ist der String l„nger, + 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 rckw„rts 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 sortierf„higen 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 */ |