Pb de fichier et de menu switch
arnoreffay
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
linkcr15 Messages postés 423 Statut Membre -
linkcr15 Messages postés 423 Statut Membre -
Bonjour,
Voilà mon code, il y a un bug quand il relance le menu, il l'affiche 2fois, autre pb, j'aimerais si je peux jouer avec des fonctions ou procedures sur les fichiers. merci d'avance
#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: ");
}
Voilà mon code, il y a un bug quand il relance le menu, il l'affiche 2fois, autre pb, j'aimerais si je peux jouer avec des fonctions ou procedures sur les fichiers. merci d'avance
#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: ");
}
A voir également:
- Pb de fichier et de menu switch
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide