Partage
  • Partager sur Facebook
  • Partager sur Twitter

[exercice] Les fichiers en C

Sujet résolu
Anonyme
    29 juin 2022 à 12:27:44

    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);
    
    
    }
    
    



    • Partager sur Facebook
    • Partager sur Twitter
      29 juin 2022 à 13:16:29

      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 ! 

      • Partager sur Facebook
      • Partager sur Twitter
      ...
      Anonyme
        29 juin 2022 à 13:30:53

        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.

        -
        Edité par Anonyme 29 juin 2022 à 13:39:44

        • Partager sur Facebook
        • Partager sur Twitter
          29 juin 2022 à 14:07:38

          CheickDiakité a écrit:

          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) !

          • Partager sur Facebook
          • Partager sur Twitter
          ...
            29 juin 2022 à 16:03:17

            est-ce que tu comprends ton code pour commencer ? que fait exactement ta fonction insertion selon toi?
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              29 juin 2022 à 21:57:05

              umfred a écrit:

              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
              • Partager sur Facebook
              • Partager sur Twitter
                30 juin 2022 à 1:15:17

                umfred n'a pas critiqué. Il a simplement demandé si tu comprenais ton code.
                Tu aurais dû lui expliquer ce que ton code faisais ...

                Il avait sûrement une bonne raison pour le demander. :)

                -
                Edité par PierrotLeFou 30 juin 2022 à 1:16:22

                • Partager sur Facebook
                • Partager sur Twitter

                Le Tout est souvent plus grand que la somme de ses parties.

                  30 juin 2022 à 1:25:07

                  +1 Pierrot,

                  une susceptibilité mal placée donne toujours de mauvais résultats.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 juin 2022 à 11:03:15

                    CheickDiakité a écrit:

                    umfred a écrit:

                    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

                    • Partager sur Facebook
                    • Partager sur Twitter

                    [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.
                    • Editeur
                    • Markdown