programmation en c différence d'emploi entre %s et %c
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

programmation en c différence d'emploi entre %s et %c



  1. #1
    invite69f7b4b0

    programmation en c différence d'emploi entre %s et %c


    ------

    Bonjour à tous,

    voici mon petit problème
    j'ai écrit un programme en c pour débutants qui renvoi l’occurrence d'une lettre dans un tableau

    pour initialiser mon tableau de caractéres tab[i] j'ai fait

    for(i=0;i<dim_tab;i++)
    {
    printf("\n %d eme valeur du tableau ",i+1); // c pour char car j utilise des caracteres
    scanf("%s",&tab[i]);
    }


    et pour ressortir le résultat

    for(i=0;i<dim2;i++)
    printf("la lettre %c se trouve %d fois dans le tableau \n" , tabnew[i], tab_occur[i]);

    je ne comprends pas pour quoi je dois initialiser mon tableau avec un %s et pour ressortir mes donner je dois prendre un %c car avec %s cela ne fonctionne pas
    donc en quoi consiste la différence ente %s et %c et quand doit-on utiliser l'un ou l'autre


    merci

    -----

  2. #2
    Jack
    Modérateur

    Re : programmation en c différence d'emploi entre %s et %c

    %s c'est pour une chaine (string)
    %c c'est pour un caractère et un seul (char)

    Attention néanmoins, un scanf avec la chaine de formatage %s ne lira pas un phrase complète au clavier, elle va découper cette phrase en morceau en fonction d'un séparateur (espace par défaut) ou du caractère de fin de ligne.

    A+

  3. #3
    polo974

    Re : programmation en c différence d'emploi entre %s et %c

    Attention ! ! !
    ton but étant d'initialiser le tableau caractère par caractère, le scanf doit être en %c.
    sinon, avec %s, tu peux entrer un texte long comme le bras et exploser ton tableau...

    en scanf:
    %s : il faut passer le pointeur d'une zone de char "assez longue" (c'est assez humoristique, ce "assez long"...).
    %c : il faut passer le pointeur sur une zone de 1 char. un seul char sera rangé dedans.
    en scanf, il faut toujours passer l'adresse de la variable à modifier.

    en printf:
    %s : il faut passer le pointeur d'un texte terminé par un '\0' (ne pas l'oublier...)
    %c : il faut passer un char (par valeur)

    donc attention entre scanf et printf, en cas de copié/collé pour afficher il y a des pointeurs en scanf, et des valeurs en printf (mais pas toujours... ).
    Jusqu'ici tout va bien...

Discussions similaires

  1. Difference des langages de programmation.
    Par invitebf26947a dans le forum Programmation et langages, Algorithmique
    Réponses: 15
    Dernier message: 25/05/2011, 18h34
  2. Différence entre E1 et E2 ?
    Par cool32 dans le forum Chimie
    Réponses: 11
    Dernier message: 19/04/2010, 22h02
  3. différence entre la puissance en kwh entre tuli et nunna?
    Par invite6894a857 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 4
    Dernier message: 04/09/2008, 17h16
  4. Réponses: 21
    Dernier message: 18/08/2008, 15h16
  5. [Programmation]Différence Compilateur C C18/IAR PIC18
    Par invite3c35244f dans le forum Électronique
    Réponses: 3
    Dernier message: 01/04/2008, 09h38