Bonjour à tous, mon but est de mettre 52 cartes ( ou moins ) toutes différentes dans un fichier texte de la façon suivante "dame carreaux" à la ligne d'en dessous "neuf trefle" etc... mon problème est que je créer une carte aléatoire sous la forme d'une structure et je vérifie qu'elle n'est pas dans le fichier pour l'ajouter à la suite. Mon problème est que la fonction estDansFichier ne trouve aucune fois l'itération de la nouvelle carte alors qu'elle y est la plupart du temps. Je pense donc que ça vient du fait que carteatrouver et la lecture de la ligne n'est pas identique. Merci à vous. PS : J'ai mis que les fonctions utiles au problème et pas toutes celles se trouvant dans le .h
PS2: j'ai déjà essayé de rajouter ou non un "\n" à la fin de chaque str à comparer mais rien à faire ça ne fonctionne pas
Ici mon fichier .h
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
typedef struct {
 char nom[20] ;
 char couleur[20] ;
 int valeur;
} CARTE;
 
int initialiserCarteDe0(CARTE *pcarte);
void afficherCarte(CARTE *carte);
void sauverCarte(CARTE *carte, FILE *FICHIER);
void lireCarte(CARTE *pcarte, FILE *FICHIER);
void CreerJeuCartes(CARTE *pcarte,int taille, FILE *FICHIER);
int estDansFichier(FILE *FICHIER,char *carteatrouver);
void EffacerFichier();
Ici mon fichier .c

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
#include "carte.h"
char *nomcarte[13]={"deux","trois","quatre","cinq","six","sept","huit","neuf","dix","valet","dame","roi","as"};
char *couleurcarte[13]={"pique","carreaux","trefle","coeur"};
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
54
55
56
57
58
59
60
61
62
63
int main()
{
    CARTE *pcarte;
    FILE *FICHIER;
    srand (time (NULL));
    int choix;
    pcarte = (CARTE *) malloc (sizeof(CARTE));
    CreerJeuCartes(pcarte,52,FICHIER);
    free(pcarte);
}
void EffacerFichier(){
    FILE *fc;
    fc=fopen("sauve.txt","w");
    fclose(fc);
}
 
int estDansFichier(FILE *FICHIER,char *carteatrouver){
    FICHIER = fopen("sauve.txt", "r");
    char ligne[100];
    char chainecomp[20];
    strcpy(chainecomp,carteatrouver);
    strcat(chainecomp,"\n");
    int iteration=0;
    while(fgets(ligne, 100, FICHIER) != NULL){
        if(strcmp(ligne,chainecomp)==0){
            iteration++;
        }
    }
    return iteration;
}
void CreerJeuCartes(CARTE *pcarte,int taille,FILE *FICHIER){
    int i;
    srand (time (NULL));
    char * nomcarte=(char *)malloc(40);
    EffacerFichier();
    for(i=0;i<taille;i++){
 
        initialiserCarteDe0(pcarte);
        strcpy(nomcarte,pcarte->nom);
        strcat(nomcarte," ");
        strcat(nomcarte,pcarte->couleur);
        while((estDansFichier(FICHIER,nomcarte))!=0){
            initialiserCarteDe0(pcarte);
            strcpy(nomcarte,pcarte->nom);
            strcat(nomcarte," ");
            strcat(nomcarte,pcarte->couleur);
 
        }
        sauverCarte(pcarte,FICHIER);
    }
}
 
void sauverCarte(CARTE *carte, FILE *FICHIER){
    FICHIER = fopen("sauve.txt", "a");
    fprintf(FICHIER,"%s %s\n",carte->nom,carte->couleur);
}
 
int initialiserCarteDe0(CARTE *pcarte){
    strcpy((pcarte->couleur),couleurcarte[rand() % 4]);
    strcpy((pcarte->nom),nomcarte[rand() % 13]);
    return 0;
 
}