Anzahl Zahlen am Anfang eines Strings Einbinden: ctype.h Eingabe: Pointer auf einen (Teil-)String Ausgabe: Anzahl der Zahlen am Anfang dieses (Teil)Strings QUELLTEXT long number(char *string) { long i=0; while(isnumber(*string++)) i++; return i; } Anzahl Leerzeichen/Tabs/... am Anfang eines Strings Einbinden: ctype.h Eingabe: Pointer auf einen (Teil-)String Ausgabe: Anzahl der Leerzeichen/Tabs/... am Anfang dieses (Teil)Strings QUELLTEXT long whitespace(char *string) { long i=0; while(isspace(*string++)) i++; return i; } Anzahl Buchstaben am Anfang eines Strings Einbinden: ctype.h Eingabe: Pointer auf einen (Teil-)String Ausgabe: Anzahl der Buchstaben am Anfang dieses (Teil)Strings QUELLTEXT long letters(char *string) { long i=0; while(isalpha(*string++)) i++; return i; } Rechenzeichen in Zahl umwandeln Eingabe: Einzelnes char-Zeichen (kein String!) Ausgabe: 1,2,3,4 je nach Operator, 0 sonst QUELLTEXT long operator(char chr) { switch(chr) { case '+': return 1; case '-': return 2; case '*': return 3; case '/': return 4; default: return 0; } } Cäsar Kodierung Eingaben: Pointer auf String der kodiert werden soll, Alphabet-Versatz entweder als Zahl oder Buchstabe (z.b. C verschiebt es um 3 Zeichen) Ausgabe: Kein Rückgabewert, zu kodierender String wird überschrieben, alle Zeichen ungleich a-z bzw A-Z werden so gelassen wie sie waren. QUELLTEXT void caesarcrypt2(char *mem, char offset) { if(offset>='A'&&offset<='Z') //Aus Gross-Buchstaben Zahl berechnen offset-='A'-1; if(offset>='a'&&offset<='z') //Aus Klein-Buchstaben Zahl berechnen offset-='a'-1; if(offset<0||offset>26) //Wenn ausserhalb des Bereichs return; do { if(*mem>='A' && *mem<= 'Z') //Gross-Buchstaben kodieren *mem='A'+(((*mem-'A')+offset)%26); if(*mem>='a' && *mem<= 'z') //Klein-Buchstaben kodieren *mem='a'+(((*mem-'a')+offset)%26); } while(*mem++); return; } Einfachere Variante, nur Gross-Buchstaben, keine Eingabeprüfung, nur Buchstaben als Versatz Eingaben: Pointer auf String der kodiert wird, Alphabet-Versatz als Zahl (keine Eingabeprüfung) Ausgabe: Kein Rückgabewert, zu kodiert String wird überschrieben, nur Grossbuchstaben werden kodiert. QUELLTEXT void caesarcrypt_easy(char *mem, int offset) { do { if(*mem>='A' && *mem<= 'Z') //Gross-Buchstaben kodieren *mem='A'+(((*mem-'A')+offset)%26); } while(*mem++); return; } Wörter in einem String zählen Eingaben: Pointer auf String wo die Wörter gezählt werden sollen Ausgabe: Anzahl der Wörter (auch Sätze mit Punkten sollten fkt) QUELLTEXT long wordcount(char *string) { long i=0; while(*string) { if(isalpha(*string) && !isalpha(*(string+1))) i++; string++; } return i; }