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 :

char phrase[] : Que signifie le contenu de ce printf ?


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 196
    Points : 37
    Points
    37
    Par défaut char phrase[] : Que signifie le contenu de ce printf ?
    Bonjour à toutes et à tous,

    Dans ce code, je ne comprends pas la signification du printf : printf("\"%s\"\n", phrase); Je sais que le %s est le contenu de la variable phrase et que le \n est un retour chariot, mais le reste, en l'occurrence les 2 \ placés entre les parenthèses, que signifient-ils ?
    Merci de votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h>
      #include <ctype.h>
     
      int main()
      {
         char phrase[]="Art.4.: La liberté consiste a pouvoir faire tout ce qui ne nuit pas a autrui : ainsi, l'exercice des droits naturels de chaque homme n'a de bornes que celles qui assurent aux autres Menbres de la société la jouissance de ces memes droits. Ces bornes ne peuvent etre déterminées que par la Loi.";
         int index,alpha,blank,punct,lower,upper;
         alpha=blank=punct=lower=upper=0;
     
      /* Collecte */
         index=0;
         while(phrase[index])
         {
            if(isalpha(phrase[index]))
               alpha++;
            if(isblank(phrase[index]))
               blank++;
            if(ispunct(phrase[index]))
               punct++;
            if(islower(phrase[index]))
               lower++;
            if(isupper(phrase[index]))
               upper++;
            index++;
         }
      /* Affichage */
         printf("\"%s\"\n", phrase);
         puts("Statistiques :");
         printf("%d lettres de l'alphabet\n",alpha);
         printf("%d blancs\n", blank);
         printf("%d signes de ponctuation\n", punct);
         printf("%d lettres minuscules\n", lower);
         printf("%d lettres majuscules\n", upper);
     
         return(0);
      }

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par chris7522 Voir le message
    en l'occurence les 2 ' \ ' placé entre les parentheses , que signifient t ils ?
    Le backslash sert à inhiber la métaprogrammation du caractère qui le suit.
    Pour le compilateur, le standard de printf() est printf(chaine entre double guillemets). Donc chaque double guillemets est considéré de façon particulière. On appelle ça un "métacaractère" parce qu'il est transformé (meta => métamorphose) dans sa signification.

    Si tu veux qu'un métacaractère ne soit pas transformé, il faut demander la neutralisation de cette transformation. C'est le rôle du backslash placé juste avant. A ce moment là, le caractère placé juste après est alors considéré comme du bête caractère tout con. Et c'est le cas ici ce qui permet alors à printf() de considérer le double guillemets comme faisant partie de la chaine à afficher au lieu de le considérer comme délimiteur de ladite chaine.

    PS: le backaslash étant lui-aussi un métacaractère, il peut de la même façon être neutralisé en le faisant précéder d'un autre backslash.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 196
    Points : 37
    Points
    37
    Par défaut
    Merci de tes eclaircissements , j'ai bien compris cette fois ci . Encore merci d'avoir prit le temps de me repondre .
    bon week

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    En anglais, cela s'appelle des "escape chars", surtout connus avec le langage HTML

    C'est essentiellement pour utiliser des caractères ASCII dit « non imprimables ».


    Escape sequences in C (<- lien wiki en anglais)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/07/2009, 08h10
  2. Que signifie "const char* const "?
    Par Krishna dans le forum C
    Réponses: 3
    Dernier message: 14/04/2009, 15h37
  3. [SQL6]Que signifie ce LEFT ?
    Par guy2004 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/01/2005, 19h18
  4. Que signifie Pagesize ?
    Par anthony70 dans le forum Débuter
    Réponses: 3
    Dernier message: 31/08/2004, 13h31
  5. Que signifier $0 et $@
    Par jaabouc dans le forum Linux
    Réponses: 6
    Dernier message: 01/06/2004, 15h17

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