http://www.pronix.de -> Forum -> C-Programmieren -> Code-Schnipsel

Unterseiten

lc() und uc()

Letze Änderung: Mittwoch   22.02.2006
Plattformunabhängig
Wandelt eine Zeichenkette in Groß- und/oder Kleinbuchstaben um.

Lizenz: BSD

#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;
    }


Diskussion zu lc() und uc()