summaryrefslogtreecommitdiff
path: root/support/asc2tex2/string2.c
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/asc2tex2/string2.c
Initial commit
Diffstat (limited to 'support/asc2tex2/string2.c')
-rw-r--r--support/asc2tex2/string2.c111
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 */