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 :

lire des caractères


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut lire des caractères
    Re-bonjour,

    J'ai un petit problème sur ce bout de code. J'ai l'impression que scanf n'est pas la fonction qui convient puisque pour mon test j'ai besoin d'obtenir une ou plusieurs lettres.

    Est ce que le problème est dans la déclaration char c ou dans le code lui même?

    {
    int i, i1;
    int res_seq;

    nres = 0;
    i1 = 0;
    char c;

    prinf("Le choix se porte-il sur le carbone alpha CA, l'azote N, l'oxygène O, ou tous les carbones C: ");
    scanf ("%2s", &c);
    if (c = 'CA'){
    // res_seq sert à stocker l'indice de l'atome précédent.
    res_seq = atom[0].res_seq;
    for (i = 1; i < natoms; i++) {
    if (atom[i].res_seq != res_seq) {
    make_residue_CA(i1, i);
    i1 = i;
    res_seq = atom[i].res_seq;
    }
    }
    make_residue_CA(i1, i);
    ...

    merci de vos réponses qui m'aide bien à avancer .

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par soria_t
    Re-bonjour,

    J'ai un petit problème sur ce bout de code. J'ai l'impression que scanf n'est pas la fonction qui convient puisque pour mon test j'ai besoin d'obtenir une ou plusieurs lettres.

    Est ce que le problème est dans la déclaration char c ou dans le code lui même?

    {
    int i, i1;
    int res_seq;

    nres = 0;
    i1 = 0;
    char c;

    prinf("Le choix se porte-il sur le carbone alpha CA, l'azote N, l'oxygène O, ou tous les carbones C: ");
    scanf ("%2s", &c);
    if (c = 'CA'){
    // res_seq sert à stocker l'indice de l'atome précédent.
    res_seq = atom[0].res_seq;
    for (i = 1; i < natoms; i++) {
    if (atom[i].res_seq != res_seq) {
    make_residue_CA(i1, i);
    i1 = i;
    res_seq = atom[i].res_seq;
    }
    }
    make_residue_CA(i1, i);
    ...

    merci de vos réponses qui m'aide bien à avancer .
    Tu cherches à saisir une chaine de caractère. Pour cela, la déclaration doit se faire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #define TAILLECHAINE 2
     
    char c[TAILLECHAINE + 1]; /* Le +1 est pour le caractère terminal */
    La comparaison de chaine doit se faire avec strcmp()

  3. #3
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    scanf ("%2s", &c);
    Avec un tel appel, il faut une déclaration du genre:
    3 car 2+1 pour le '\0' à la fin. En outre, le & devant c devient inutile.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par soria_t

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      char c;
     
      scanf ("%2s", &c);
      if (c = 'CA')
    D'abord pense à la balise code (#) pour placer le code.

    Ensuite sur ces 3 lignes tu as 5 erreurs :

    1) tu veux charger une chaîne donc c'est char * ou char[] et non char
    2) dans le scanf mettre 2 ne change pas grand chose à mon avis
    (il faut si tu veux obliger à ne mettre que 2 caractères faire une boucle de lecture qui vérifie si la chaîne rentrée fait 1, 2 ou plus, et tant qu'elle ne fait pas 2 reposer la question)
    3) comme on te l'a dit, la comparaison de chaîne s'effectue avec strcmp
    4) les guillement simples désignent un caractère et non pas une chaîne
    5) le signe = fait une assignation. La comparaison se fait avec ==

    [EDIT]
    Il y a même une autre erreur car tu as mis prinf au lieu de printf....


    Donc le code serait quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    char Entree[3] ;
     
    strcpy (Entree, "");
     
    while ( strlen(Entree) != 2 )
    {
        printf("Le choix se porte-il sur le carbone alpha CA, l'azote N, l'oxygène O, ou tous les carbones C: ");
        scanf ( "%s", Entree );
    } 
     
    if ( strcmp (Entree,  "CA") == 0){
    [/EDIT]

    Cordialement

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut remerciement
    Merci vraiment.
    Ce forum est génial, pour moi qui débute.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    j'ai ajouté une modif

Discussions similaires

  1. Lire des caractères spéciaux dans un fichier
    Par pierre5897 dans le forum Débuter
    Réponses: 17
    Dernier message: 22/08/2013, 22h54
  2. Éviter de lire des caractères avec fscanf()
    Par Self-Mao dans le forum C
    Réponses: 3
    Dernier message: 02/05/2013, 09h39
  3. Lire des caractères encodés en UTF8
    Par ratapapa dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/04/2008, 17h38
  4. Réponses: 1
    Dernier message: 02/05/2007, 09h22
  5. [Unicode] Comment lire des caractères ?
    Par Mickey974 dans le forum Delphi
    Réponses: 7
    Dernier message: 14/04/2007, 14h53

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