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 :

Acceder au premier caractere d'une chaine dans une liste chainee


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Par défaut Acceder au premier caractere d'une chaine dans une liste chainee
    Bonjour,
    J'espere que le sujet n'est pas trop flou : J'ai une liste chainee qui contient une suite de chaine. Je voudrais comparer le premier caractere de chacune de ces chaines de caractere a un char. J'ai tout betement teste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%c", tmp->data[0])
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%c", tmp->(data[0]));
    mais le premier n'affiche rien et le second
    error: parse error before '(' token
    Cela est-il seulement possible ?

    Merci d'avance !

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Essaye comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%c", tmp.data[0]);
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Par défaut
    Bonjour,
    Merci de ta reponse rapide
    Je travaille dans une sous fonction qui a recu un pointeur sur ma liste chainee. Je ne peut donc pas faire tmp.data, mais seulement tmp->data.

    tmp.data ni tmp.data[0] ne marche donc..

    Un autre idee ?

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Ton tableau, c'est un tableau statique ou dynamique ? Sinon montre ton code, réduit au minimum en situant le problème mais compilable !

    Normalement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%c", tmp->data[0]);
    devrais fonctionner d'après mes tests rapides donc si ca ne t'affiche rien... montre le code remplissant ce tableau et la fonction qui lit le tableau !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 50
    Par défaut
    J'ai teste, l'erreur est :
    error: request for member `data' in something not a structure or union
    Voila mon code (reduit et commente) :

    Fonction appelant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char            *fonction(...)
    {
      t_list        *list;  // declaration d'un pointeur sur ma liste chainee
     
      list = 0;             // initialisation de la liste
      appel(&list, ...);  // appel a ma sous fonction, avec l'adresse du pointeur en parametre
      aff_list(list);
    }
    Fonction appellee :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void            appel(t_list **list, ...)
    {
      t_list        *tmp; // un pointeur sur la liste chainee
     
      tmp = *list; // on donne la valeur de l'adresse de la liste chainee initialise dans la fonction precedente
      while (tmp != 0)
        {
          printf("%c", tmp.data[0]);  // voila mon test
          tmp = tmp->next; // on passe a la chaine suivante dans la liste
        }
    }
    Pour info ma liste chainee ressemble a sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct          s_list
    {
      char                  *data;
      struct s_list         *next;
    }                       t_list;
    Un exemple de ce que je voudrais :

    Un liste chaine contenant ces chaines :

    Albert
    Alexandre
    Bernard
    Guillaume

    je voudrais enregistrer chaque chaine (chaque adresse plutot) dont le data[0] est egal a A par exemple

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Toutankharton
    J'ai teste, l'erreur est ...
    Ouais désolé, j'avais pas tout lu dans ton message, j'ai rectifié le tir par la suite


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char            *fonction(...)
    {
      t_list        *list;  // declaration d'un pointeur sur ma liste chainee
     
      list = 0;             // initialisation de la liste
      appel(&list, ...);  // appel a ma sous fonction, avec l'adresse du pointeur en parametre
      aff_list(list);
    }
    Je ne vois pas d'allocation de ta liste et de ton tableau de char, est-ce normal ? Si tu déclares un pointeur que t'initialise à 0 (déjà à NULL ce serait peut être mieux pour un pointeur) puis tu passes son adresse (ici null) à une autre fonction ... tu risque pas d'aller très loin là ! A cet instant précis, ta liste n'existe pas encore et dans la fonction appelée tu veut déjà la parcourrir ... y'a une mouche dans le lait là
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recherche d'une chaine dans une chaine
    Par Katachana dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2008, 12h10
  2. recherche d'une chaine dans une chaine
    Par jpclutier dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/12/2007, 11h30
  3. Tester une chaine dans une chaine
    Par ulysse031 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 26/03/2007, 00h48
  4. chercher caractére d'une chaine dans une chaine
    Par ulysse031 dans le forum Langage
    Réponses: 25
    Dernier message: 21/03/2007, 18h09
  5. Réponses: 2
    Dernier message: 19/10/2005, 15h38

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