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 :

Comparaison sur structure


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 77
    Par défaut Comparaison sur structure
    Bonjour à tous, voilà j'obtiens 2 erreurs dans ce code que je ne comprends pas

    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
    void parse(char *ligne, char *FS, instruction *lst_pattern){
     
    	char *ptr1;
    	instruction temp, temp2;
    	temp = *lst_pattern;
     
    	ptr1 = malloc(100*sizeof(char));
        	ptr1 = strtok(ligne, FS);
    	while(ptr1 != NULL){
    		while(temp != NULL){
    			if(strcmp(ptr1, temp.pattern)==0){
    				printf("FIND\n");
    			}
    			temp2 = temp->next;
    			temp = temp2;
    		}
    		ptr1 = strtok(NULL, FS);
    	}
    }
    La structure instruction ressemble à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct instruction_{
    	char *pattern;
    	int nb_procedure;
    	char **procedure;
    	struct instruction_ *next;
    }instruction;
    J'obtient celà comme erreur :
    error: used struct type value where scalar is required
    error: invalid type argument of ‘->’

    C'est surtout la 1ère que je comprends pas, le problème est sur :

    apparement, mais je vois pas pourquoi j'ai pas le droit de le faire
    Et la 2ème sur :

    Et là aussi pour moi c'est bon

    Alors je suis vraiment nul ?

    Merci à tous

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    Tu tentes simplement de comparer une structure à une constante qui n'est pas du meme type, qui n'est pas du meme type assimilable.
    Si ta variable etait un pointeur, tu pourrais la comparer à NULL.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 77
    Par défaut
    ah oui en effet, quand je fais
    ça larche mieux

    Merci beaucoup

    Et la 2ème erreur c'est aussi une histoire de pointeur ?

    edit : j'ai rien dis j'ai trouvé la soluce

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,
    Citation Envoyé par HaTnuX
    ah oui en effet, quand je fais
    ça larche mieux

    Merci beaucoup

    Et la 2ème erreur c'est aussi une histoire de pointeur ?

    edit : j'ai rien dis j'ai trouvé la soluce
    Tu es sûr de ce que tu dis ?

    Avec ta nouvelle écriture, tu ne fais que contrôler que ton temp a une adresse différente de NULL !!

    De plus, plus loin, tu écris
    alors que temp n'est pas un pointeur.

    Je doute que ton code compile s'il correspond à ce que tu nous montres.

    Il faut faire attention aux types que tu utilises. Là, compte tenu du reste du code, tu as certainement besoin de changer la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    instruction temp, temp2;
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    instruction *temp, *temp2;
    et d'adapter le code en fonction.

    Ton code me donne l'impression d'une écriture dans le genre
    "Si j'essayais comme ça ? Après tout, on verra bien si ça marche."

  5. #5
    Expert confirmé
    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
    Par défaut
    Tu ne fais pas attention à ce que tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      ...
      if(strcmp(ptr1, temp.pattern)==0) printf("FIND\n");
      temp2 = temp->next;
      ...
    La première ligne indique que temp est un struct (ou une union) et la deuxième que temp est un pointeur sur un struct (ou une union). Ce code est incohérent.
    Un peu plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ptr1 = malloc(100*sizeof(char));
    ptr1 = strtok(ligne, FS);
    Comment espères-tu pouvoir récupérer la mémoire allouée par malloc puisque tu écrases la valeur retournée ? A quoi sert ce malloc ?
    Il est à peu près sur que, comme le dit thewho, on devrait avoir qq chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    char *ptr1;
    instruction *temp = lst_pattern;
    ....
              while(temp != NULL)
              {
    	  if(strcmp(ptr1, temp->pattern)==0) printf("FIND\n");
    	  temp = temp->next;
              }
    .....

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/07/2006, 09h57
  2. [Structures]Problème sur structures
    Par kendras dans le forum C++
    Réponses: 5
    Dernier message: 07/06/2006, 10h20
  3. Comparaison de structure de deux tables
    Par Ryan Sheckler dans le forum Outils
    Réponses: 7
    Dernier message: 15/02/2006, 22h00
  4. [DEBUTANT]Comparaison sur date et heure
    Par tripper.dim dans le forum Oracle
    Réponses: 15
    Dernier message: 15/11/2005, 18h25
  5. Comparaison sur variable de type Binary (32)
    Par krapno dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/10/2005, 12h48

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