Bonjour,

J'ai essayé le code suivant :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
 
#define SIZE 20
 
typedef struct {
char equipeA[SIZE];
char equipeB[SIZE];
unsigned int numEquipeA;
unsigned int numEquipeB;
unsigned int numGagnant;
unsigned int numMatch;
}Match;
 
Match ajouterCombinaison(Match *str) {
str->numEquipeA = 1;
str->numEquipeB = 2;
str->numMatch = 0;
 
do {
printf("Combien de matchs voulez-vous ajouter ? (max 10)\n");
printf("R : ");
scanf("%d",&str->numMatch);
}while(str->numMatch < 1 || str->numMatch > 10);
 
for(int i=0;i<str->numMatch;++i) {
printf("Match num%cro %d",130,str->numMatch);
printf("\nDonner le nom de l'%cquipe %d : ",130,str->numEquipeA);
scanf("%s",str->equipeA);
printf("Donner le nom de l'%cquipe %d : ",130,str->numEquipeB);
scanf("%s",str->equipeB);
printf("Donner le gagnant entre %s et %s (1 pour %cquipe 1, 2 pour %cquipe 2) : ",str->equipeA,str->equipeB,130,130);
scanf("%d",&str->numGagnant);
str->numMatch++;
}
 
return *str;
}
 
void afficherStruct(Match *str) {
for(int i=0;i<str->numMatch;++i) {
printf("\n---Match num%cro %d entre %s et %s :\n",130,str->numMatch,str->numEquipeA,str->numEquipeB);
printf("Gagnant : %d",str->numGagnant);
}
}
 
int main(void) {
Match *str;
 
ajouterCombinaison(&str);
afficherStruct(&str);
 
return 0;
}
Le problème est tout d'abord que lorsque je choisis le nombre de matchs, par exemple 1, ça me dit de remplir un nombre illimité de matchs... La fonction afficherStruct elle aussi ne marche pas (ça me fait fermer le programme). J'ai fouillé partout, entre notion de pointeurs et j'en passe, et je bloque toujours.

J'ai essayé de lire les avertissements du compilateur :
passing argument 1 of 'ajouterCombinaison' from incompatible pointer type [-Wincompatible-pointer-types]|
Je comprends pas, on a un pointeur sur structure et j'utilise bien le signe '&' dans le main dans les paramètres de la fonction...
expected 'Match * {aka struct <anonymous> *}' but argument is of type 'Match ** {aka struct <anonymous> **}'|
Et celui-là, j'avoue que je comprends pas trop... En quoi Match est un double pointeur...?

Merci