IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

isupper(char carct) - tolower(char caract)


Sujet :

C

  1. #1
    Membre confirmé Avatar de bnadem35
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Par défaut isupper(char carct) - tolower(char caract)
    Bonjour !
    Si quelqu'un connait le role des fonctions suivantes en "C" ça serait très sympa de me donner des pistes là-dessus :
    isupper(char caractère) - tolower(char caractère)
    Merci d'avance !

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par micromaths
    Bonjour !
    Si quelqu'un connait le role des fonctions suivantes en "C" ça serait très sympa de me donner des pistes là-dessus :
    isupper(char caractère) - tolower(char caractère)
    Merci d'avance !
    isupper : Dire si c'est une majuscule
    Voir la page man : http://man.developpez.com/man3/isupper.3.php

    tolower : mettre en minuscule?
    Voir la page man : http://man.developpez.com/man3/tolower.3.php

    Jc

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par micromaths
    Si quelqu'un connait le role des fonctions suivantes en "C" ça serait très sympa de me donner des pistes là-dessus :
    isupper(char caractère) - tolower(char caractère)
    Qu'en pense ton livre de C ? K&R 2 page 164...

    Sinon, il y a des liens vers des sites de références des fonctions C sur mon site...

  4. #4
    Membre Expert Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Par défaut
    man ascii

    en ascii tu ajoute + ou - 31 en décimal a la valeur ascii de la lettre

  5. #5
    Membre confirmé Avatar de bnadem35
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Par défaut
    Très Grand Merci pour toutes vos réponses !
    Je vous suis tellement reconaissant

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par gnto
    en ascii tu ajoute + ou - 31 en décimal a la valeur ascii de la lettre
    Les fonctions isupper(), tolower() et assimilees sont justement la pour ne pas avoir a se preoccuper de ce genre de detail hideux (et permettent de rester portable sur une plateforme n'utilisant pas l'ASCII pour coder les caracteres).

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par DaZumba
    Les fonctions isupper(), tolower() et assimilees sont justement la pour ne pas avoir a se preoccuper de ce genre de detail hideux (et permettent de rester portable sur une plateforme n'utilisant pas l'ASCII pour coder les caracteres).
    Et si à la place de 31 on met:'A'-'a'?
    Autrement dit, tous les charset garantissent t'il la contiguité des codes des majuscules d'une part et ceux des minuscules d'autres part?

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    Et si à la place de 31 on met:'A'-'a'?
    Autrement dit, tous les charset garantissent t'il la contiguité des codes des majuscules d'une part et ceux des minuscules d'autres part?
    Non,

    http://home.arcor.de/wzwz.de/wiki/ebcdic/cc_en.htm

    et c'est justement pour ça qu'il y a des fonctions pour cacher ces détails scabreux. La contiguité n'est garantie que pour le caractères représentant les chiffres de 0 à 9.

  9. #9
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Merci pour l'exemple.
    Y a t'il une raison particulière à cela?

  10. #10
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par seriousme
    Merci pour l'exemple.
    Y a t'il une raison particulière à cela?
    Je ne suis pas sûr de comprendre la question. L'origine d'EBCDIC est dans les codes utilisés pour les cartes perforées qui au départ utilisaient quelque chose de proche de la base 10.

    Quelques URL:

    http://www.quadibloc.com/comp/cardint.htm
    http://homepages.cwi.nl/~dik/english/codes/80col.html
    http://www.cs.uiowa.edu/~jones/cards/history.html

  11. #11
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Trois petites remarques:
    - ce qu'on passe à tolower/toupper, c'est un int qui doit contenir un char converti en unsigned... si on a des char signés, les passer directement à ces fonctions risque d'être catastrophique;
    - 'a'-'A' vaut 32, pas 31
    - si cette relation est vraie pour ISO-8851-1 (du moins pour les caractères qui ont leurs deux formes présentes), elle ne l'est pas pour ISO-8859-15 ou pour CP1252 (alias WinLatin1) sans parler d'unicode.

  12. #12
    Membre Expert Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Par défaut
    Citation Envoyé par man toupper
    La définition de "majuscule" et "minuscule" dépend de la localisation. Par exemple la localisation C par défaut ne connait rien concernant les accents, et n'effectue alors aucune conversion.
    Dans certaines langues, des lettres minuscules n'ont pas d'équivalent majuscule.
    man toupper/tolower
    man isupper

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Clé de registre] Conversion char* vers unsigned char*
    Par The Lord of Nesquik dans le forum C
    Réponses: 7
    Dernier message: 04/07/2006, 00h30
  2. Types : char vs. unsigned char
    Par Herode dans le forum C++
    Réponses: 3
    Dernier message: 15/02/2006, 22h39
  3. vector<unsigned char> et unsigned char* : conversion ?
    Par zax-tfh dans le forum SL & STL
    Réponses: 5
    Dernier message: 15/01/2006, 11h43
  4. Insertion d'un char dans un char *
    Par bugmenot dans le forum C
    Réponses: 2
    Dernier message: 22/10/2005, 16h17
  5. char et unsigned char
    Par jobherzt dans le forum C++
    Réponses: 8
    Dernier message: 11/02/2005, 01h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo