Partage
  • Partager sur Facebook
  • Partager sur Twitter

Suppression d'une partie d'un fichier texte

    26 janvier 2020 à 20:59:18

    Bonsoir,
    je vous poste mon code car je ne trouve pas de solution pour effacer une partie d'un fichier texte.
    J'ai testé celui ci et ne comprend pas pourquoi il ne fonctionne pas.
    J'espere que vous pourrez m'aider.
    Merci.
    Julien
    int main()
    {
        printf("Hello world!\n");
        FILE* draw=fopen("dessin_forme.txt", "r");
        FILE* drawbis= fopen("dessin_formebis.txt","w+");
        int n_forme=3;
       int n_points_forme1 = 64;
        int n_points_forme2=64;
        int  n_points_forme3 = 64;
        int taille = sizeof(int);
        int* tab1= calloc(n_points_forme1,taille);
        int* tab2= calloc(n_points_forme2,taille);
    int carx, cary;
        int i=0;
        int u=0;
        for (i=0; i<= n_points_forme1/2-1;i++)
        {
            fscanf(draw,"%d %d", &carx,&cary);
            tab1[i]=carx;
            tab2[i]= cary;
        }
        int h=0;
        for(h=0;h<=n_points_forme1; h++)
        {
            fprintf(drawbis,"%d ",tab1[h]);
            fprintf(drawbis,"%d\n",tab2[h]);
        }
        int n=0;
        for(n=0; n<=n_points_forme2/2;n++)
        {
            int g;
            fscanf(draw,"%d %d",&g,&g);
        }
        u=i;
         for (u=i; u<= i+n_points_forme1/2-1;u++)
        {
            int carx, cary;
            fscanf(draw,"%d %d", &carx,&cary);
            tab1[u]=carx;
            tab2[u]= cary;
        }
         int d;;
        for(d=u;d<=u+n_points_forme3; h++)
        {
            fprintf(drawbis,"%d ",tab1[d]);
            fprintf(drawbis,"%d\n",tab2[d]);
        }
        fclose(draw);
        fclose(drawbis);
        return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      26 janvier 2020 à 21:44:50

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        27 janvier 2020 à 5:14:42

        Salut,
        Si tu nous donnais une description du fichier en question, cela pourrait aider.
        • Partager sur Facebook
        • Partager sur Twitter

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

          27 janvier 2020 à 12:50:13

          int main()
          {
              printf("Hello world!\n");
              FILE* draw=fopen("dessin_forme.txt", "r");
              FILE* drawbis= fopen("dessin_formebis.txt","w+");
              int n_forme=3;
             int n_points_forme1 = 64;
              int n_points_forme2=64;
              int  n_points_forme3 = 64;
              int taille = sizeof(int);
              int* tab1= calloc(n_points_forme1,taille);
              int* tab2= calloc(n_points_forme2,taille);
          int carx, cary;
              int i=0;
              int u=0;
              for (i=0; i<= n_points_forme1/2-1;i++)
              {
                  fscanf(draw,"%d %d", &carx,&cary);
                  tab1[i]=carx;
                  tab2[i]= cary;
              }
              int h=0;
              for(h=0;h<=n_points_forme1; h++)
              {
                  fprintf(drawbis,"%d ",tab1[h]);
                  fprintf(drawbis,"%d\n",tab2[h]);
              }
              int n=0;
              for(n=0; n<=n_points_forme2/2;n++)
              {
                  int g;
                  fscanf(draw,"%d %d",&g,&g);
              }
              u=i;
               for (u=i; u<= i+n_points_forme1/2-1;u++)
              {
                  int carx, cary;
                  fscanf(draw,"%d %d", &carx,&cary);
                  tab1[u]=carx;
                  tab2[u]= cary;
              }
               int d;;
              for(d=u;d<=u+n_points_forme3; h++)
              {
                  fprintf(drawbis,"%d ",tab1[d]);
                  fprintf(drawbis,"%d\n",tab2[d]);
              }
              fclose(draw);
              fclose(drawbis);
              return 0;
          }



          Voici mon fichier texte ou on retrouve sur chaque ligne "x y\n" et un "\n" sur le dernier point de la forme.

          -
          Edité par AbcAbc6 27 janvier 2020 à 16:46:23

          • Partager sur Facebook
          • Partager sur Twitter
            27 janvier 2020 à 16:48:42

            Bonjour, les balises <pre> c'est si vous utilisez l'éditeur en mode Markdown, si vous utilisez l'éditeur HTML c'est le bouton code qu'il faut utiliser.

            En image cela donne :

            J'ai édité votre message.

            • Partager sur Facebook
            • Partager sur Twitter
              27 janvier 2020 à 20:24:51

              Hello,

              Moi, j'ai pas trop bien compris ton problème. Ça veut dire quoi: "effacer une partie d'un ficher texte" ? Les 5 premières lignes ? Les 3 premiers caractères, les caractères 28 à 93, les ligne 5 à 7 ou les 6 dernières lignes ?

              Toutes ces manières "d'effacer" ont un point commun: on ouvre le fichier original, on en crée un nouveau, et on recopie les informations du fichier original dans le fichier de destination, sauf celles que l'ont souhaite supprimer. Et ensuite, on remplace le fichier original par le nouveau fichier.

              Ici, par exemple on supprime les lignes 4 et 8 (non testé)

              #include <stdio.h>
              
              int main(void) {
              	FILE *stin,*stout;
              	int line=0;
              	char buffer[1024];
              	
              	stin=fopen("original.txt","r");
              	stout=fopen("new.txt","w");
              	while(fgets(buffer,sizeof(buffer),stin)!=NULL) {
              		line++;
              		if(line!=4 && line!=8)
              			fputs(buffer,stout);
              	}
              	fclose(stin);
              	fclose(stout);
              	remove("original.txt");
              	rename("new.txt","original.txt");
              	
              	return(0);
              }

              -
              Edité par edgarjacobs 27 janvier 2020 à 20:36:50

              • Partager sur Facebook
              • Partager sur Twitter

              On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

              Suppression d'une partie d'un fichier texte

              × 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