Convertion d'une chaine de mjuscule en minuscule et vice versa

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 048 fois - Téléchargée 29 fois

Contenu du snippet

Voilà, j'avais codé cette fonction pour moi et je me suis aperçu qu'il n'y en avait pas ici, donc, je vous la présente. Je pense que les librairies telles que MFC ou Borland fournissent des convertions de ce type, mais cette fonction a le mérite d'utiliser seulement la lib standard. (je n'ai pas utilisé le toupper et tolower de stdio.h)

Source / Exemple :


#include <stdio.h>

char *min_maj(char *string)
{
    int c, i, len;
    char buf[2];
    len = strlen(string)+1;
    char *pStr = (char *)malloc(len);
    if(pStr == NULL)
        return;
    memset(pStr, 0, len);
    for(i=0; i <= len-1; i++)
    {
        c = string[i];
        if((c <= 122) && (c >= 97))
            c -= 32;
        sprintf(buf, "%c", c);
        strcat(pStr, buf);
    }
    return pStr;
}

char *maj_min(char *string)
{
    int c, i, len;
    char buf[2];
    len = strlen(string)+1;
    char *pStr = (char *)malloc(len);
    if(pStr == NULL)
        return;
    memset(pStr, 0, len);
    for(i=0; i <= len-1; i++)
    {
        c = string[i];
        if((c <= 90) && (c >= 65))
            c += 32;
        sprintf(buf, "%c", c);
        strcat(pStr, buf);
    }
    return pStr;
}

int main(int argc, char *argv[])
{
    char *pString1 = min_maj("abcdef");
    char *pString2 = maj_min("ABCDEF");
    printf("%s\n", pString1);
    printf("%s\n", pString2);
    free(pString1);
    free(pString2);
    system("pause");
    return 0;
}

Conclusion :


Voilà les 2 fonctions avec une petite démo de son utilisation dans main()...

Merci BruNews pour la petite modif sur le forum ;)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
43
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
7 octobre 2006

mais ya pas de fonction STANDART qui permette de transformer un string en minuscule ou majuscule... tolower et touper fonctionnent sur un caractere et non pas une suite de caracteres(un string)
et strlwr strupr sont pas STANDART!!
mais j'avais bien compris que ct pour le fun c juste qu'il est tjrs plus interessant de faire les 2 fonctions en une : recopie et passer en min ou maj
mais ta solution est parfaitement correcte alca06

khayyam >> en quoi strncpy est moins dangereux?? parce qu'il ne recopie uniquement si de la place est allouée à la destination?
Messages postés
46
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
13 novembre 2004

exact, merci à toi alca06, j'utilise plutot ta fonction que la mienne maintenant :)
Messages postés
7
Date d'inscription
lundi 7 juin 2004
Statut
Membre
Dernière intervention
27 juin 2004

Ca n'est pas moi qui cherche a réinventer la roue...
"strlwr" et "strupr" existe déjà ainsi que "tolower" et "toupper" comme nous l'explique kod32... C'est seulement pour le fun.
Messages postés
51
Date d'inscription
lundi 7 juin 2004
Statut
Membre
Dernière intervention
15 juillet 2005

euh, juste pour préciser les choses, il est préféable d'utiliser strncpy plutôt que strcpy, pour des raisons de sécurité. elle est tout aussi standard.
Messages postés
43
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
7 octobre 2006

ya strcpy fonction standart qui existe (ca ne sert à rien de réinventer la roue surtout qd celle ci devient moins optimisée :p)
autant faire une fonction qui recopie et passe en minuscule ou maj comme l'a fait BruNews ou moi meme ;)
sinon a part ca je kiffe bien ton style un peu illisible :p
le while (*s) c stylé mais peu comprenhensible pour un débutant...
Afficher les 19 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.