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 les différents éléments d'une char


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut Lire les différents éléments d'une char
    Bonjour,

    J'ai déclaré une char, et je souhaiterais accéder indépendamment à chaque élément la composant, un peu comme dans un tableau.

    Voici ma déclaration:
    Ensuite, je souhaiterais comparer (via strcmp) des valeurs données de input, par exemple via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strcmp(input[i],"aa");
    Comment puis-je faire?

    Merci.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Il y a un problème entre ce que tu dis et ce que tu codes, ce n'est pas la même chose :
    J'ai déclaré une char
    Au passage, c'est un mais peu importe, cette phrase se décline comme cela :
    Après, tu peux vouloir déclarer un tableau de char :
    Ou encore un tableau de chaine de caractères :
    C'est ce que tu as dans ton code, un tableau de chaines de caractères

    Donc qu'est ce que ce que tu veux faire ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut
    En réalité, mon but est de pouvoir accéder, caractère par caractère, à l'entrée (input) de l'utilisateur.
    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fgets(input, sizeof input, stdin);
    après la déclaration de input, de manière à pouvoir récupérer ce qu'a entré l'utilisateur.

    Étant donné que l'entrée de l'utilisateur peut être très longue (sans limite de taille), j'ai -pour le moment- fixé à 50, la longueur maximale de input.

    Si j'ai indiqué un * devant char, c'est pour pouvoir y accéder via un pointeur, mais je suis un peu perdu, bien que j'aie lu les tutoriels relatifs à ce sujet.

    Je pense que mon problème est simple, mais sa résolution ne me saute pas aux yeux.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Donc ce que tu veux, c'est déclarer un tableau de char
    ensuite, tu peux effectivement comparer la chaine saisie par l'utilisateur avec ce que tu veux, pour cela, tu utilises strcmp()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(strcmp(input, "aa") == 0)
    {
       /* l'utilisateur a tapé "aa" */
       ...
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut
    Effectivement, mais je ne souhaite pas comparer input, mais bien input[i], avec 0<i<50, c'est bien ça le souci.

  6. #6
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Citation Envoyé par lucaordi Voir le message
    Effectivement, mais je ne souhaite pas comparer input, mais bien input[i], avec 0<i<50, c'est bien ça le souci.
    Dans ce cas tu devrait comparer caractère / caractère !
    Un bon vieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(input[i]=='a' && input[i+1]=='a')
    {
       //alors l'utilisateur a tapé "aa"
    }

    En fait le problème que tu avait au début c'est que tu voulait comparer 2 caractères donc ca ne passe pas !


    A moins que tu ne veuille faire cela :
    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
     
    char *pointeurInput;
    char input[50];
    int i=0;
     
    //tu initialise ton pointeur sur la première case du tableau!
    pointeurInput=input;
     
    //Il te suffit d'additionner une valeur afin de pointé ou tu veux dans le tab.
     
    //Ici je compare les 2 premier éléments du tableau 
    strncmp(pointeurInput,"aa",2);
     
    //Ici les éléments 5 et 6 (par exemple)
    pointeurInput+=5;
    strncmp( pointeurInput ,"ab",2);
    Avec la maniere ci-dessus tu peut jouer sur l'offset de ton tableau en midifiant directement le pointeur ! Ceci te permet de toujours comparer les 2 premiers caractères de ta chaîne.

    Et donc ton input[i] se placera toujours en debut de chaine grace à un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(i=0;i<X;i++,pointeurInput++);
    //ou X est la valeur que tu veux sur ton i
    Si c'est pas ce que tu veux faire alors je ne vois pas :s

    Bonne chance

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut
    Si si, c'est bien ça, mais cela fonctionnera-t-il? En effet, il me semble qu'il est toujours nécessaire d'utiliser strcmp, non?

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    strcmp() c'est pour comparer si des chaines de caractères sont identiques (est ce que "toto" est identique à "titi").

    Si tu veut comparer des caractères, le test == suffit (est ce que input[0] == 'a') comme indiqué dans le précédent message
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut
    Je ne mets pas en doute l'exactitude des informations qui m'ont été données, mais j'obtiens, dans 3 cas, des erreurs différentes,
    à chaque ligne où je viens de modifier la comparaison:
    1. Si je suis "à la lettre" vos recommendations, j'obtiens comparison between pointer and integer
    2. Si je suis "à la lettre" vos recommendations, et que je modifie la déclaration de input en
    au lieu de
    ,j'obtiens alors invalid argument of `unary *' (have `int')
    Je dois sûrement m'être fourvoyé; quelqu'un peut-il me dire ce qui pourrait être à l'origine de ce problème?

    Merci.

  10. #10
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Montre nous ton code afin que l'on essaye de comprendre ce que tu veux faire
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  11. #11
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Citation Envoyé par lucaordi Voir le message
    Je dois sûrement m'être fourvoyé; quelqu'un peut-il me dire ce qui pourrait être à l'origine de ce problème?

    Merci.
    Peut-être as-tu tenté de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if( *input[i]=='a')
    Dans ce cas oui cela ne fonctionnera pas et te donneras une erreur type:
    Comparaison entre pointeur et integer

    Montre nous ton code afin que l'on essaye de comprendre ce que tu veux faire
    Ce serait en effet plus simple

Discussions similaires

  1. [CS3] Figer les différents éléments d'une animation
    Par L'aigle de Carthage dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 09/05/2012, 15h18
  2. Lire les différents champs d'une requête.
    Par Max0802 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/10/2009, 15h31
  3. Réponses: 0
    Dernier message: 17/04/2009, 12h03
  4. Récupérer les différents éléments Internet et Mail
    Par mdriesbach dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 31/10/2005, 13h43

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