Salut à tous !
Contexte : Dans le jeu que je code il y a des règles par exemple ## donne $.
Une règle est un tableau de deux dimensions qui contient d'une part les ingrédients et d'autre part le résultat.
Question : J'essaye d'entrée des règles dans un fichier texte par exemple
## $
$$ ~
Et mon but est de lire ce fichier et de renvoyer une tableau de règles.
Voici une fonction qui pourrait vous être utile :
Voici la bête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Regle char2Regle(char entree[], char sortie[]){ Regle regle = { {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, }; int i;for(i=0;entree[i]!='\0';i+=1){ regle.entree[char2Materiau(entree[i])]+=1; } for(i=0;sortie[i]!='\0';i+=1){ regle.sortie[char2Materiau(sortie[i])]+=1; } return regle; }Mon but est de stocker des règles dans le tableau tampax jusqu'à ce que le curseur soit à la fin du fichier mais je passe à côté. Pouvez vous m'aider s'il vous plait ?
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 Regle *lit_regles(const char *filename){ int i,j=0,N = compte_lignes(filename); Regle *tampax = calloc(sizeof(Regle),N); FILE* fichier = fopen("filename", "r"); char *entree, *sortie; if (!fichier){ for(i=0;fgetc(fichier)!=EOF;i++){ entree = calloc(sizeof(char),N); sortie = calloc(sizeof(char),N); fscanf(fichier,"%s %s", entree, sortie); tampax[i] = char2Regle(entree,sortie); fseek(fichier,(strlen(entree)+strlen(sortie))+1,SEEK_CUR); free(entree); free(sortie); } fclose(fichier); return tampax; } else { printf("\nImpossible d'ouvrir le fichier test.txt\n"); return NULL; } }
Partager