Code-Schnipsel
Moderatoren: broesel, Martin Conrad, PatrickThema: String in Gross- oder Kleinbuchstaben umwandeln
String in Gross- oder Kleinbuchstaben umwandeln
Patrick (Moderator) am 06.02.2006 um 13:29
#include <stdio.h>
#include <stdlib.h> // malloc
#include <string.h> // strlen
/*
wandelt den uebergebenen String in Kleinbuchstaben um
*/
void _lc(char *s){
unsigned i=0;
while (*(s+i)){
if (*(s+i)>64 && *(s+i)<91)
*(s+i)+=32;
i++;
}
return;
}
/*
wandelt eine Kopie des uebergebenen Strings in Kleinbuchstaben um;
Rueckgabewert NULL bei Fehler oder Adresse auf Kopie;
braucht stdlib.h und string.h
*/
char *lc(char *s){
unsigned i=0;
char *p;
if (NULL == s)
return NULL;
if ((p = (char *) malloc(sizeof(char) * strlen(s) + 1)) == NULL)
return NULL;
while (*(s+i))
*(p+i) = (*(s+i)>64 && *(s+i)<91) ? *(s+i++)+32 : *(s+i++);
*(p+i)=0;
return p;
}
/*
wandelt den uebergebenen String in Grossbuchstaben um
*/
void _uc(char *s){
unsigned i=0;
while (*(s+i)){
if (*(s+i)>96 && *(s+i)<123)
*(s+i)-=32;
i++;
}
return;
}
/*
wandelt eine Kopie des uebergebenen Strings in Grossbuchstaben um;
Rueckgabewert NULL bei Fehler oder Adresse auf Kopie;
braucht stdlib.h und string.h
*/
char *uc(char *s){
unsigned i=0;
char *p;
if (NULL == s)
return NULL;
if ((p = (char *) malloc(sizeof(char) * strlen(s) + 1)) == NULL)
return NULL;
while (*(s+i))
*(p+i) = (*(s+i)>96 && *(s+i)<123) ? *(s+i++)-32 : *(s+i++);
*(p+i)=0;
return p;
}
int main(){
char *ptr;
char string[]="Hallo Welt.";
// Vorher
printf("string: %s\n", string);
// Kleinbuchstaben
ptr=lc(string);
printf("ptr: %s\n", ptr);
printf("string: %s\n", string);
_lc(string);
printf("string geaendert: %s\n", string);
// Aufraeumen
puts("\n");
free(ptr);
ptr=NULL;
// Grossbuchstaben
ptr=uc(string);
printf("ptr: %s\n", ptr);
printf("string: %s\n", string);
_uc(string);
printf("string geaendert: %s\n", string);
return 1;
}
--
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.
Re: String in Gross- oder Kleinbuchstaben umwandeln
Martin Conrad (webmaster) am 17.03.2006 um 09:00
wärs nicht sinnvoll, die Funktionen umzubenennen, um Konsistenz zu anderen Sprachen herzustellen?
In anderen Sprachen heissen die Funktionen meistens tolower und toupper...
Bis denne
Martin
--
0xC0FFEE
Re: String in Gross- oder Kleinbuchstaben umwandeln
Livingston am 17.03.2006 um 13:24
sind tolower und toupper nicht Funktionsnamen der C-Standardlib für Zeichen-, statt Stringumwandlungen?
Gruß,
Livi
Re: String in Gross- oder Kleinbuchstaben umwandeln
Martin Conrad (webmaster) am 17.03.2006 um 13:36
Zitat:
sind tolower und toupper nicht Funktionsnamen der C-Standardlib für Zeichen-, statt Stringumwandlungen?
Aua, du hast natürlich recht. Ich meinte strtolower/upper
Bis denne
Martin
--
0xC0FFEE
Re: String in Gross- oder Kleinbuchstaben umwandeln
Patrick (Moderator) am 17.03.2006 um 17:44
Ich habe mich bei der Namensvergabe an Perl orientiert.
Die Funktionen heissen dort lc() um eine "lowercased" Version und uc() um eine "uppercased" Version des übergebenen Strings zu bekommen.
Ich habe aber nichts dagegen, wenn die Funktionen andere Namen bekommen sollen - es fallen mir blos keine sinnvollen ein
Gruß und schönes Wochenende,
Patrick-Oliver
--
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.
