Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Responsable Modération

    Avatar de ok.Idriss
    Homme Profil pro Idriss Neumann
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Nom : Homme Idriss Neumann
    Âge : 23
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 4 904
    Points : 16 738
    Points
    16 738

    Par défaut Deux rubriques à proposer

    Bonsoir.

    Voilà, je voulais vous proposer d'intégrer deux rubriques à la FAQ C dans la partie Entrées/Sorties.

    Citation Envoyé par 1ère rubrique
    Quels sont les principales séquences d'échappement (ou caractères spéciaux) ?


    • \n : saut de ligne
    • \t : tabulation
    • \b : placement du curseur
    • \r : retour chariot (carriage return)
    • \f : saut de page
    • \a : signal sonore
    • \\ : antislash
    Citation Envoyé par 2nde rubrique
    Quels sont les différents formats à utiliser avec printf et scanf ?

    Les formats de sortie avec printf sont les suivants :

    • %d, %i : nombre entier décimal
    • %u : nombre entier non signé (unsigned)
    • %o : nombre entier octal
    • %x : nombre entier hexadécimal (minuscule)
    • %X : nombre entier hexadécimal (majuscule)
    • %c : caractère ASCII (type char)
    • %f : nombre à virgule flottante
    • %e, %E : nombre à virgule flottante au format exponentiel
    • %g, %G : nombre au format %f ou sinon %e lorsque l'exposant est inférieur à -4
    • %s : chaîne de caractères
    • %p : pointeur
    • %n : pointeur (nombre de caractères déjà donnés)

    Remarque :

    Selon la man page de printf :

    - Les formats %d à %X concernent les variables de type int. Pour les variables de type short, il faut ajouter un h après le % (exemple : %hd) et pour les variables de type long, il faut ajouter, il faut ajouter un l après le % (exemple : %ld).
    - Les formats %f à %LG concernent les variables de type float. Pour les variables de type double, il faut ajouter un l après le % (exemple : %lf).

    Il se peut toutefois que vous ayez un Warning du genre "ISO C90 does not support the `%lf' printf format". En effet les formats %lf (nombre à virgule de type double), %hhd (char signé) et %hhu (char non signé) n'existent qu'en C99.

    Les formats de saisie à utiliser avec scanf sont les suivants :


    • %d, %i : entier décimal de type int
    • %hd : entier décimal de type short
    • %ld : entier décimal de type long
    • %u : entier décimal de type int non signé (unsigned)
    • %hu : entier décimal de type short non signé (unsigned short)
    • %lu : entier décimal de type long non signé (unsigned long)
    • %o : entier octal de type int
    • %ho : entier octal de type short
    • %lo : entier octal de type long
    • %x : entier hexadécimal de type int
    • %hx : entier hexadécimal de type short
    • %lx : entier héxadécimal de type long
    • %c : caractère ASCII (type char)
    • %f : nombre à virgule flottante de type float
    • %lf : nombre à virgule flottante de type double
    • %e, %E : nombre à virgule flottante au format exponentiel de type float
    • %le, %LE : nombre à virgule flottante au format exponentiel de type double
    • %g, %G : nombre à virgule flottante au format décimal ou exponentiel (lorsque l'exposant est inférieur à -4) de type float
    • %lg, %LG : nombre à virgule flottante au format décimal ou exponentiel (lorsque l'éxposant est inferieur à -4) de type double
    • %s : chaîne de caractères
    • %p : pointeur
    • %n : aucune donnée utilisateur (montre le nombre de caractères déjà lus)
    N'hésitez pas, si vous acceptez ces rubriques, à les modifier à votre guise (correction, expression, organisation, ...).

    Cordialement,
    Idriss.
    mes cours sur DVP | initiation aux bases de données relationnelles | FAQ Linux | FAQ tests
    la programmation Shell | bonnes pratiques Bash | exercices shells scripts & Bash corrigés
    Merci aussi de lire les règles du club

    "Forgiveness does not change the past, but it does enlarge the future." (Paul Boese)
    Traduction approximative : le pardon ne change pas le passé mais élargit l'horizon de l'avenir.

  2. #2
    Membre chevronné Avatar de Pouet_forever
    Inscrit en
    octobre 2009
    Messages
    671
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 671
    Points : 724
    Points
    724

    Par défaut

    Il manque un caractère d'échappement -> '\v' (et peut-être d'autres ^^ )
    Pour scanf %i n'est pas complètement bon :p
    Et il manque des formateurs aussi.
    Plus tu pédales moins fort, moins t'avances plus vite.

  3. #3
    Rédacteur/Modérateur
    Avatar de Melem
    Homme Profil pro Jessee Michaël Christian Edouard
    Ingénieur développement logiciels
    Inscrit en
    janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Nom : Homme Jessee Michaël Christian Edouard
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2006
    Messages : 3 656
    Points : 7 427
    Points
    7 427

    Par défaut

    J'ai ajouté la première rubrique : Quel est le rôle de \ dans une chaîne de caractères ?

    Je n'ai pris la deuxième rubrique parce qu'il faut vraiment avoir choisi le pire des cours de C pour ne pas connaître ces spécifications. On peut peut-être aussi dire la même chose de la première mais au moins la question était déjà plus ou moins traitée par une entrée existante alors j'ai juste modifié cette entrée.

    Il manque un caractère d'échappement -> '\v' (et peut-être d'autres ^^ )
    Ça je pense que c'est pas vraiment grave .

  4. #4
    Responsable Modération

    Avatar de ok.Idriss
    Homme Profil pro Idriss Neumann
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Nom : Homme Idriss Neumann
    Âge : 23
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 4 904
    Points : 16 738
    Points
    16 738

    Par défaut

    Bonjour.

    Tout d'abord merci de vos réponses.

    Citation Envoyé par Melem Voir le message
    Je n'ai pris la deuxième rubrique parce qu'il faut vraiment avoir choisi le pire des cours de C pour ne pas connaître ces spécifications.
    C'est vrai ... l'intérêt que j'y trouvait est d'avoir une liste la plus complète possible (c'était pas encore le cas mais ça aurait pu être complété/corrigé au fur et à mesure). En effet, les cours sur internet que j'ai vus en ont une liste plus ou moins remplie avec les formats les plus courants mais on ne les trouve pas tous. Cependant, il est vrai que la liste de ce tuto (que je viens de voir) est suffisante (et puis il y a toujours les man pages).

    Citation Envoyé par Pouet_forever Voir le message
    Pour scanf %i n'est pas complètement bon
    Pourrait-tu m'indiquer ce qui n'est pas bon ? Le fait que %d et %i sont équivalents ? Le fait que j'ai oublié de préciser que ce sont des entiers décimaux signés ? Je ne suis pas sûr de savoir ce que tu penses par là ...

    Cordialement,
    Idriss
    mes cours sur DVP | initiation aux bases de données relationnelles | FAQ Linux | FAQ tests
    la programmation Shell | bonnes pratiques Bash | exercices shells scripts & Bash corrigés
    Merci aussi de lire les règles du club

    "Forgiveness does not change the past, but it does enlarge the future." (Paul Boese)
    Traduction approximative : le pardon ne change pas le passé mais élargit l'horizon de l'avenir.

  5. #5
    Membre chevronné Avatar de Pouet_forever
    Inscrit en
    octobre 2009
    Messages
    671
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 671
    Points : 724
    Points
    724

    Par défaut

    Il ne prend pas uniquement les nombres décimaux, mais aussi les nombre héxa et octaux
    Tiré de la page de man :

    Code :
    1
    2
    3
    4
    5
    6
    i :           correspond  à  un  entier  éventuellement signé. Le
                  pointeur suivant doit être du type int *.  L'entier
                  est en base 16 (héxadécimal) s'il commence par `0x'
                  ou `0X', en base 8 (octal)  s'il  commence  par  un
                  `0',  et  en  base  10 sinon.  Seuls les caractères
                  correspondants à la base concernée sont utilisés.
    Plus tu pédales moins fort, moins t'avances plus vite.

  6. #6
    Responsable Modération

    Avatar de ok.Idriss
    Homme Profil pro Idriss Neumann
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Nom : Homme Idriss Neumann
    Âge : 23
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 4 904
    Points : 16 738
    Points
    16 738

    Par défaut

    Merci de la précision ... j'aurais du regarder la man page de scanf de plus près (j'ai surtout regardé un bouquin et la man page de printf).

    Cordialement,
    Idriss
    mes cours sur DVP | initiation aux bases de données relationnelles | FAQ Linux | FAQ tests
    la programmation Shell | bonnes pratiques Bash | exercices shells scripts & Bash corrigés
    Merci aussi de lire les règles du club

    "Forgiveness does not change the past, but it does enlarge the future." (Paul Boese)
    Traduction approximative : le pardon ne change pas le passé mais élargit l'horizon de l'avenir.

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

    Informations forums :
    Inscription : octobre 2004
    Messages : 3 894
    Points : 4 358
    Points
    4 358

    Par défaut

    On peut trouver la liste des codes d'échappement classiques ici, entre autres.

    Il manque notamment :
    • \" : Double quotation mark
    • \v : Vertical tab
    • \' : Single quotation mark
    • \? : Literal question mark

    Le problème des guillemets est aussi problématique que le "\\", et quel que soit le système d'exploitation.

    Vu qu'il n'en manque que quatre, autant les ajouter à la FAQ...

  8. #8
    Membre régulier Avatar de JulieCarree
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2012
    Messages : 50
    Points : 71
    Points
    71

    Par défaut

    Bonjour,

    on peut trouver les options de sorties formatées pour printf aussi dans le 'GNU C Library Manual' , ici http://www.gnu.org/software/libc/man...ut-Conversions in english .

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •