Bonjour,
J'ai un exercice qui consiste à lire des données dans un fichier source et à les copier dans un fichier destination, en y incrémentant 2 à chaque note de chaque ligne. Cette note ne devant pas dépasser 20.
Fichier source :
Fichier destination :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 15; Aline 12; Bernard 9; Mafalda 19; Eliot
Débutant avec toutes les fonctions fget, fread, j'ai encore du mal à me figurer comment elle marche et comment les données sont manipulées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 17; Aline 14; Bernard 11; Mafalda 20; Eliot
la situation idéal serait quelles soient récupérés (fget?) et stockés dans un tableau de structure à deux colonnes.
De là, je n'aurais qu'à récupérer la première colonne de chaque ligne (persone[0][i]) et d'incrémenter via une boucle (for (int i = 0; i < nbrPers; i++)), en m'assurant que la note ne dépasse pas 20 (if & else)
Est-ce qu'il ne serait pas une bonne idées de diviser ma fonction Anniversaire()? J'ai l'impression que je veux faire trop de chose dedans...
Merci d'avance,
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
64
65
66 #include <stdio.h> #include <stdlib.h> // ================================= STRUCTURE ================================= // tableau de structure stockant une personne et sa note struct personne { float note; char nom[30]; }; //déclaration de ce tableau sous le pointeur tab struct personne *tab; // ================================= FONCTION APPELEE ================================= // fonction copiant les données d'un fichier dans un autre en y incrémentant deux point void Anniversaire(FILE *source; FILE *dest) { // déclaraction de la taille du tableau. tab = malloc(nbrPers * sizeof(struct personne)); //copie des données fichier source dans le tableau tab. // incrémentation à la variable note. for (int i = 0; i < nbrPers; i++) { if (tab[i].note < 19) { tab[i].note + 2 } else { tab[i].note + 1 } } // copie des données du tableau tab dans le fichier dest. } // ================================= FONCTION MAIN ================================= int main() { FILE *fo, *fw; if ((fo = fopen("/note.txt", "r")) == NULL) { printf("impossible d'ouvrir en lecture le fichier note.txt !\n"); exit(0); } if ((fw = fopen("/anniversaire.txt", "w"))) == NULL) { printf("impossible d'ouvrir en écriture le fichier anniversaire.txt !\n"); exit(1); } Anniversaire(*fo, *fw); fclose(fo); fclose(fw); return 0; }
Red'
Partager