Bonjour,

Voilà mon code, il y a un bug quand il relance le menu, il l'affiche 2fois, autre problème, j'aimerais si je peux jouer avec des fonctions ou procédures sur les fichiers
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
 
 
void menu ();
 
 
 
int main (int argc, char * argv[]){
 
char fichier_Ndat[20] = "entier.dat";
FILE * fichier_dat;
 
 
 
    char c = ' ';
    while (1){
		int i;
 
		menu();
        c = tolower(getchar());
 
        switch (c) {
 
			case 'f' :
			printf("\033[H\033[2J");
			printf ("Nommer le fichier\n");
			char nouveau_nom[10];
			scanf("%s.dat", &nouveau_nom);
			rename(fichier_Ndat, nouveau_nom);
			break;
 
            case 'c' :
			printf("\033[H\033[2J");
			printf ("Remplissage du fichier binaire avec 100 int aléatoire\n");
			if ((fichier_dat = fopen(fichier_Ndat,"wb"))==NULL) {
			perror("Write "); 
			exit(1);
			}			
			int u;
			for (i=0;i<100;i++){
			//fread (&u, sizeof (int),1,fichier_alea);
			u = random() % 1000+1;
			fwrite(&u,sizeof(int),1,fichier_dat);
			}
			fclose(fichier_dat);
			break;
 
			case 'a' :
			printf("\033[H\033[2J");
			printf ("Lecture du fichier binaire de 100 int aléatoires\n");
			if ((fichier_dat = fopen(fichier_Ndat,"rb"))==NULL) {
			perror("Read "); 
			exit(1);
			}
			i=0;
 
			//while (fgets(&u, 8, fichier_dat) != NULL) {// On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
        	while (fread(&u,(sizeof(int)/4),1,fichier_dat)){
			printf("N%d: %x\n",i++,u);
			}
			fclose(fichier_dat);
			break;
			case 'd' :
				printf("\033[H\033[2J");
			printf ("Lecture du fichier binaire de 100 int aléatoires\n");
			if ((fichier_dat = fopen(fichier_Ndat,"rb"))==NULL) {
			perror("Read "); 
			exit(1);
			}
			i=0;
			while (fread(&u,sizeof(int),1,fichier_dat)){
			printf("N%d: %d\n",i++,u);
			}
			fclose(fichier_dat);
				break;
			case 'e' :
				printf("\033[H\033[2J");
			printf ("Lecture du fichier binaire de 100 int aléatoires\n");
			if ((fichier_dat = fopen(fichier_Ndat,"rb"))==NULL) {
			perror("Read "); 
			exit(1);
			}
			i=0;
			while (fread(&u,sizeof(int),1,fichier_dat)){
			printf("N%d: %x\n",i++,u);
			}
			fclose(fichier_dat);
				break;
			case 'k' :
				printf("\033[H\033[2J");
				remove(fichier_Ndat);
				break;
			case 'q' : //Fin = vrai;
			//break;
			exit(0);
            default: break;
            }
    } 
 
exit(0);
 
}
 
void menu (){
		printf ("----\n");
        printf ("Menu\n");
        printf ("----\n\n");
		printf ("\tF:  Nommer le fichier\n");
		printf ("\tC:  Créer un fichier binaire contenant 100 int aléatoires\n");
		printf ("\tA:  Afficher le fichier en hexadécimal, octet par octet\n");
		printf ("\tE:  Afficher le fichier en hexadécimal, entier par entier\n");
		printf ("\tD:  Afficher le fichier en décimal, entier par entier\n");
		printf ("\tK:  Détruire le fichier\n");
        printf ("\tQ:  quitter\n");
		printf ("----\n\n");
        printf ("Entrez votre choix: "); 
}