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 :

Déclarer des variables de type texte


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Points : 22
    Points
    22
    Par défaut Déclarer des variables de type texte
    Bonjour à tous,

    Donc voilà, j'ai décidé d'apprendre le langage C et je suis légèrement perdu au niveau des variables.

    Je suis entrain de créer un petit programme console qui permettrait en quelques sortes de gérer un fichier "CLIENTS". Cependant je suis coincé à ce niveau :

    Ce fichier contiendrait donc le "NOM", "PRÉNOM" et "DATE DE NAISSANCE" pour commencer.

    étant un pauvre débutant, en ce qui concerne la date de naissance, j'ai créé 3 variables ( jour, mois et année ) de type "long" avec pour valeur initiale 0, j'utilise l'instruction scanf pour affecter une nouvelle valeur à chaque variable .

    Voici ma fonction concernant la date de naissance :
    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
     
    {
    long jour=0, mois=0, annee=0;
     
    printf("Entrez le jour de naissance : \n");
    scanf("%ld", &jour);
     
    printf("Le mois de naissance : \n");
    scanf("%ld", &mois);
     
    printf("L'annee de naissance : \n");
    scanf("%ld", &annee);
     
    printf("Vous etes ne le %ld %ld %ld\n\n", jour, mois, annee); 
    system("PAUSE");
    return 0;
    }
    Là ou j'ai un problème, ça serait de déclarer des variables de type texte pour le Nom, Prénom.

    Je suis un peu gêner pour mes questions de noob, en espérant un minimum de compréhension de votre part, je vous remercie d'avance pour l'aide qui me sera apporté.

  2. #2
    Membre du Club Avatar de LeBelge63
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Points : 58
    Points
    58
    Par défaut
    Tu as juste à déclarer des variables de type char nomvar [longueur] pour tes nom et prénom. Ensuite pour le scan tu utilise "%s".

    Un petit conseil, regarde le plus de tuto possible afin de progresser plus rapidement :

    Cours developpez.com

    Ps: Utilise la balise code ce sera plus lisible
    Pensez à utiliser

    est ton ami

    La France c'est l'Auvergne avec un petit peu de terre autour !!!

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    MERCI beaucoup pour ta réponse, super sympa

    Au plaisir bonne continuation

  4. #4
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Citation Envoyé par LeBelge63 Voir le message
    Tu as juste à déclarer des variables de type char nomvar [longueur] pour tes nom et prénom. Ensuite pour le scan tu utilise "%s".

    Un petit conseil, regarde le plus de tuto possible afin de progresser plus rapidement :

    Cours developpez.com

    Ps: Utilise la balise code ce sera plus lisible
    Pardonne moi mais sauf erreur de ma part ce n'est plus une variable mais un tableau.

    La différence : une variable est un espace mémoire Alloué par L'OS alors que le tableau est en faite une sorte de plusieurs variables alloué et contigu

    Donc ce que te dit de faire LeBelge63 c'est de crée un tableau pour stocker le nom et prénom tout en mettant le "%s " (string) dans ton scanf

    Il y a des methode plus simple que le printf pour afficher les tableau ainsi que le scanf .

    pour le printf tu peux utiliser puts
    et le scanf gets

    Je ne dit pas ca pour te critiqué mais pour t'aider .

    Au niveau de ta declaration de variable c'est totalement inutile de mettre un long
    tu as au max 31 jours 12 mois
    donc deja pour ces deux la tu peux les declarer en unsigned char (1octet plage de valeur : 0 a 255 de memoire)
    ou au pire tu les declare en short (2octet)

    Et pour l'année tu peux mettre un int (si tu compte les annee negative )

    Pour les trois premier printf tu peux les remplacer par des puts rend le code plus leger.

    Et pour finir si tu change tes declaration tu aura juste a mettre de des %d

    Et pour t'aider sur tes variables texte je vais te mettre un exemple sur le mois.

    voila le bout de code :
    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
    #include <stdio.h>
    #include <windows.h>
     
    int main (void)
    {
    unsigned char jour=0;
    char mois[10];  // ne pas oublier de compte le \0
    int annee=0;
     
    puts("Entrez le jour de naissance : \n");
    scanf("%d", &jour);
     
    puts("Le mois de naissance : \n");
    scanf("%s", &mois);
     
    puts("L'annee de naissance : \n");
    scanf("%d", &annee);
     
    printf("Vous etes ne le %d %s %d\n\n", jour, mois, annee); 
    system("PAUSE");
    return 0;
    }
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Overcrash3181 Voir le message
    Il y a des methode plus simple que le printf pour afficher les tableau ainsi que le scanf .

    pour le printf tu peux utiliser puts
    et le scanf gets
    Je comprends mieux pourquoi tu t'appelles 'Overcrash'...

    Merci de ne pas donner de mauvais conseils aux débutants. gets() est un bug. Il n'y a pas de moyens portables de l'utiliser de façon sûre. Il ne faut pas l'utiliser. Point.

    Et si tu confonds avec fgets(), ben il faut te relire avant de poster, ça m'évitera un coup de sang dès le matin... Je n'ai plus 20 ans...
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    désolé XD

    Ce sont mes prof qui m'ont dit qu'on pouvait l'utilisé .

    Comme ca aujourd'hui j'ai appris quelque chose .

    Merci
    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Overcrash3181 Voir le message
    Ce sont mes prof qui m'ont dit qu'on pouvait l'utilisé .
    Change de profs, et vite, avant qu'il ne déclenchent l'Apocalypse...
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Change de profs, et vite, avant qu'il ne déclenchent l'Apocalypse...
    +1
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  9. #9
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Overcrash3181 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int main (void)
    {
    unsigned char jour=0;
    char mois[10];  // ne pas oublier de compte le \0
    int annee=0;
     
    puts("Entrez le jour de naissance : \n"); //-- puts ajoute lui-même un '\n'
    scanf("%d", &jour); //-- Format faux : jour est un unsigned char -> %hhd
     
    puts("Le mois de naissance : \n");
    scanf("%s", &mois); //-- mois est un tableau -> scanf("%s", mois);
    ....
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  10. #10
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    HA bas merci beaucoup

    cela va mettre très utile !

    je vais me renseigner sur le %hhd je le connait pas

    pour le tableau me suis gouré ^^

    merci a vous
    OVer
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  11. #11
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par diogene Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    unsigned char jour=0;
    scanf("%d", &jour); //-- Format faux : jour est un unsigned char -> %hhd
    pour unsigned char c'est plutôt %hhu.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Attention, le spécificateur de taille hh, c'est du C99. Il n'est pas défini en C90 et Visual C++ ne le supporte pas.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Attention, le spécificateur de taille hh, c'est du C99. Il n'est pas défini en C90 et Visual C++ ne le supporte pas.
    Et de toutes façons, ce bricolage, c'est n'importe quoi. Restons simples :
    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
     
    #include <stdio.h>
     
    int main (void)
    {
     
       int err;
       int jour;
       do
       {
          int n = scanf ("%d", &jour);
          err = n != 1 || jour < 1 || jour > 31;
     
          /* maintes fois publiée sur ce forum */
          purge ();
     
          if (err)
          {
             puts ("err");
          }
       }
       while (err);
     
       return 0;
    }
    Ca, c'est beaucoup plus utile...
    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
     
    a
    err
    z
    err
    0
    err
    32
    err
    -1
    err
    1000000000000000000000000000
    err
    15
     
    Press ENTER to continue.
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. un tableau multidimentionnel avec des variable de type different ?
    Par sebsmax dans le forum Collection et Stream
    Réponses: 25
    Dernier message: 18/01/2007, 14h30
  2. Réponses: 6
    Dernier message: 14/06/2006, 16h02
  3. [VB] gestion des couleurs des variables de type string
    Par landry005 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/03/2006, 14h36
  4. [Access] Enregistrer des données de type Texte RTF
    Par portu dans le forum Bases de données
    Réponses: 22
    Dernier message: 27/10/2005, 22h54
  5. [AS2] déclarer des variables dans une fonction
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 02/08/2005, 12h50

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