[Langage C]déplacer un struct dans une fonct°

Résolu
skiliss Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   -  
skiliss Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Mon problème est que je n'arrive pas a déplacer une structure d'un fonction a une autre en langage C.
main.h
#include <stdio.h>
#include <stdlib.h>
typedef struct groupe groupe;
struct groupe
{
            char nom[20];
            int attaque;
            int PV;

};

main.c
#include <stdio.h>
#include <stdlib.h>
#include "main.h" 

int main(int argc, char *argv[])
{
    groupe joueur1[4];// création d'un variable groupe 1
    groupe joueur2[4]; //création d'une variable groupe 2
}

void metier(int *s,groupe *joueur1)
{
int m;
printf("Choisissez votre metier :\n");
                          printf("1.Guerrier\n");
                          printf("2.Mage\n");
                          printf("3.Pretre\n\n");
                          scanf("%d",m);
                          switch(m)
                          {
                                 case 1: 
                                      joueur1[s]->attaque=joueur1[s]->attaque;
                                 break;
                                 }
}              
A voir également:

6 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
salut.
je ne comprend rien à ce que tu fait.
met le tyedef après la définition de la structure déjà.
Ensuite, dans métier, si joueur1 est de type "groupe*" alors joueur1[*s] (s est de type "int*" donc joueur1[s] ne fait pas ce que tu attend) est de type "groupe" ce qui n'est pas un type pointeur, donc tu n'as aucune raison d'utiliser l'opérateur "->" !
Une bonne révision de la notion de pointeur me semble nécessaire pour ton cas !
Ou alors n'y touche pas.
0
skiliss Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   14
 
merci sa me fait avancer mais sa donne d'autre erreur
j'ai maintenant l'erreur "invalid type of 'unary*'
void metier(int *s, groupe *joueur1)
{
int m;
printf("Choisissez votre metier :\n");
                          printf("1.Guerrier\n");
                          printf("2.Mage\n");
                          printf("3.Pretre\n\n");
                          scanf("%d",m);
                          switch(m)
                          {
                                 case 1: 
                                      (*joueur1[*s]).attaque = (*joueur1[*s]).attaque + 2;
                                      
                                 break;
                          }
}                          

je révise aussi les pointeurs
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
continue à bien réviser alors ! La réponse est dans ce que je t'ai dit avant, si joueur1 est de type "groupe*", alors joueur1[*s] est de type "groupe", et *joueur[*s] n'a donc aucun sens ! C'est comme écrire int a=3;*a=5;a=*4; c'est ppour ça que le compilateur râle. c'est dire que joueur1[*s].attaque suffit.
0
skiliss Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   14
 
c'est bon j'ai modifier et cela fonctionnne mais j'ai encore un souci (il compile, le début fonctionne puis sa plante)
void met(int *s,groupe *joueur1)
{
int tmp;
printf("Choisissez votre metier :\n");
printf("1.Guerrier\n");
printf("2.Mage\n");
printf("3.Pretre\n\n");
scanf("%f",tmp);
              if(tmp == 1)
              {
                  
                   printf("%d Pa\n",(joueur1[*s]).attaque);
                   (joueur1[*s]).attaque += 2;
               }
                   else 
                   {
                       printf("rien");
                   }
}            
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Remplace scanf("%f",tmp); avec
scanf("%d",&tmp);


0
skiliss Messages postés 168 Date d'inscription   Statut Membre Dernière intervention   14
 
sa marche merci
0