Bonsoir je sollicite votre aide pour m'aider a résoudre un problème au niveau d'un exercice que je fais.
L'exercice me demande de proposer un menu sur lequel j'offre plusieurs choix a l'utilisateur tel que: créer un fichier, insérer un contenu dans un fichier, supprimer un fichier, afficher le contenu d'un fichier, et enfin quittez le programme mais seul cette dernière option doit arrêter le programme.
Ma première difficultés c'est comment faire pour affecte le contenu insérer vers le fichier crée et la deuxième c'est d'affiche ce contenu la
Voici ce que j'ai fais
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
void creer_fichier()
{
FILE * fichier;
char nom[45];
printf("NOM DU FICHIER A CREER: ");
scanf("%s",&nom);
fichier= fopen(nom,"w");
}
void affiche(){
FILE* fichier;
char nom[100];
printf("\nEntrez le nom du fichier");
scanf("%s",nom);
fichier = fopen("bon.txt", "r");
char no[50];
while (fread(&no,sizeof(char),1,fichier))
printf("%s",no);
fclose(fichier);
}
void supprime()
{
char sup[50];
printf("\nEntrez le nom du fichier a supprime : ");
scanf("%s",sup);
remove (sup);
}
void insertion(){
FILE *fichier2;
fichier2 = fopen("texte3.txt", "w");
char contenu[500];
if (fichier2 != NULL)
{
// On demande d'insere le contenu
printf("\nInsere le contenu de votre ficher : ");
scanf("%s",&contenu);
// On l'écrit dans le fichier
fprintf(fichier2, "%s", contenu);
fclose(fichier2);
}
}
void quittez(){
exit(1);
}
int main(){
int n;
char choix[10];
do
{
printf("Tapez 1 cree un fichier\n");
printf("Tapez 2 pour inserer un contenu dans un fichier un fichier\n");
printf("Tapez 3 pour supprimer un fichier\n");
printf("Tapez 4 pour afficher le contenu de un fichier\n");
printf("Tapez 5 quitter le programme\n");
scanf("%d",&n);
switch(n)
{
case 1 :
creer_fichier();
break;
case 2 :
insertion();
break;
case 3 :
supprime();
break;
case 4 :
affiche();
break;
case 5 :
quittez();
break;}
printf("VOULEZ VOUS CONTINUE : ");
scanf("%s",&choix);
}while(strcmp(choix,"oui")==0);
}
1) creer_fichier : Ça crée bien le fichier (vide), mais tu ne peux rien en faire durant l'exécution de ton instance du programme, vu que tu ne le ferme pas. (Cette fonction n'est pas très utile).
2) insertion pour ajouter des données dans un fichier on l'ouvre en mode ajout "a"
4) affiche Tu demande quel fichier tu veux ouvrir et tu ouvres le fichier bon.txt, pourquoi demander ?
Pourquoi de compliquer la vie à le lire avec fread, il y a des fonctions plus simple ! fgets par exemple.
PS : Essais de corriger les warnings donné par ton compilateur !
Il n'y a pas de warning quand je compile .Ca s'exécute normalement
Comment faire pour que lorsque je veux inserer un contenu que ce contenu partent dans le fichier que j'ai crée et enfin que je puisse affiché ce contenu .C'est ma plus grande préoccupation.
Il n'y a pas de warning quand je compile .Ca s'exécute normalement
C'est que tu ne les a pas activé (au minimum -Wall et -Wextra)
CheickDiakité a écrit:
Comment faire pour que lorsque je veux inserer un contenu que ce contenu partent dans le fichier que j'ai crée et enfin que je puisse affiché ce contenu .
Tu devrais te relire, parce que ta question n'est pas très clair ? Si c'est ajouter du contenu à un fichier il faut comme je te l'ai dit l'ouvrir en mode append (ajout) "a". Si tu veux ajouter du contenu au fichier que tu as créés avec creer_fichier, tu va devoir le fermer avant, voir mon commentaire (1) ou arrêter et redémarrer ton application et faire l'ajout sans le créer !
Si j'ai mal compris reformule ta question !
Les remarques de mon premier post son quand même importante pour le bon fonctionnement de ton programme surtout la (1) !
est-ce que tu comprends ton code pour commencer ? que fait exactement ta fonction insertion selon toi?
j'ai pas besoin de critique juste d'aide
pas une critique, mais pour te faire remarquer, que ta fonction insertion ouvre un fichier "texte3.txt" en écriture, demande à l'utilisateur de saisir un contenu qui est alors enregistré dans ce fichier "texte3.txt"
ta demande étant
Ma première difficultés c'est comment faire pour affecte le contenu insérer vers le fichier crée
Il suffit donc de passer le nom (chemin) du fichier à cette fonction, nom qui sera récupérer par le retour de ta fonction creer_fichier() (un petit peu de code à rajouter; si le nom est vide, il faudra par exemple demander de choisir un fichier ou créer un fichier; ou si le fichier n'existe pas, le créer (mais c'est un peu ce qui est déjà fait) Donc un peu de code à rajouter dans tes fonctions et ton main.
Idem pour ta seconde demande, afficher ce contenu. tu as une fonction affiche() qui ouvre, lit et affiche un fichier "bon.txt", donc c'est le même principe que j'ai indiqué plus haut, mais pour une lecture de ficher.
Voilà pourquoi je demandais si tu comprenais ton code (peut-être es tu débutant et que tu ne sais pas (encore) que les fonctions peuvent avoir des paramètres et retourner des valeurs ? )
- Edité par umfred 30 juin 2022 à 11:09:11
[exercice] Les fichiers en C
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.