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 :

printf et "é"


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 45
    Par défaut printf et "é"
    Bonjour à tous,

    j'essaye de formatter une chaine de caractère contenant 1 ou plusieurs caractère alphabétique accentué (genre à, é ou è) selon cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%15s","à la votre");
    Et je me rend compte que la chaine n'est pas formatté sur 15 caractères mais sur 16.
    Par contre un petit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("%15s","a la votre");
    et tout revient dans l'ordre.
    Quelqu'un aurait il une idée du pourquoi?

    Merci à tous

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Linux et encodage UTF-8, je dirais...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    printf utilise uniquement la table ASCII, non ? Dans la table ascii, il n'y a pas les caractere speciaux, va savoir ce qu'il t'as mis pour 'à'. En tout cas, si tu veux mettre des caractere autre que ceux contenue dans ASCII (et non ASCII etendu qui n'est pas standart), il te faudra te tourner vers un autre encodage.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    printf utilise uniquement la table ASCII, non ?
    Non, il utilise la table ASCII étendue (codes ASCII de 1 à 255 inclus), et balance ça au destinataire qui se charge de mettre en forme (encodage des caractères, codes d'échappement, etc.).

    Mais de façon intrinsèque, printf gère tous les caractères possibles, SAUF le caractère nul. Reste l'encodage, qui dépend de la plate-forme bien entendu. Mais ça, c'est un autre problème qui est en dehors du souci de l'OP qui "pue" l'UTF-8 à plein nez.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Non, il utilise la table ASCII étendue (codes ASCII de 1 à 255 inclus), et balance ça au destinataire qui se charge de mettre en forme (encodage des caractères, codes d'échappement, etc.).

    Mais de façon intrinsèque, printf gère tous les caractères possibles, SAUF le caractère nul. Reste l'encodage, qui dépend de la plate-forme bien entendu. Mais ça, c'est un autre problème qui est en dehors du souci de l'OP qui "pue" l'UTF-8 à plein nez.

    Je viens de me reneigner un peu mieux ....
    Les profs de SI au lycée nous avaient appris que la table ASCII allé jusqu'à 255 ...
    Apparement, ASCII de base c'est jusqu'a 127.



    Petite question, c'est quoi l'OP ?

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    Les profs de SI au lycée nous avaient appris que la table ASCII allé jusqu'à 255 ...
    Apparement, ASCII de base c'est jusqu'a 127.
    La table [ame="http://fr.wikipedia.org/wiki/ASCII"]ASCII[/ame], c'est de 0 à 127 (inclus), c'est normalisé strictement. Si une plate-forme dit respecter la norme ASCII, les valeurs des caractères sont garantis sur cette plage. On parle aussi parfois de code ASCII 7 bits.
    De 128 à 255, c'est la table ASCII étendue, qui ne garantit pas grand-chose de précis à part l'existence des caractères en question...

    Petite note : le caractère nul fait bien partie de la table ASCII, donc. C'est un "manque" du printf de ne pas savoir le gérer, même s'il faut bien reconnaître qu'il n'a pas d'intérêt à priori (sauf peut-être pour certaines séquences d'échappement, et encore...).

    Citation Envoyé par SofEvans Voir le message
    Petite question, c'est quoi l'OP ?
    Original Poster, la personne qui a démarré le sujet.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

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