aide pour inserer et manipuler un fichier .txt en C
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

aide pour inserer et manipuler un fichier .txt en C



  1. #1
    invitef838f58f

    aide pour inserer et manipuler un fichier .txt en C


    ------

    bonjour,

    je suis sous code blocks et pas un pro,

    à la base j'ai un fichier xml qui m'est fournis avec des paramètres et données,
    et avec ceci je dois faire une programmation pour afficher ces informations.


    Je ne sais pas si je suis parti dans le bon sens mais je vais vous présenter ce que j'ai commencé:
    1) j'ai copié dans un fichier .txt les infos que je veux afficher, qui est en fait une suite finie de 1 et de 0 (ex: 1100011001...1)
    2) voici le code que j'ai commencé et qui marche mais pas comme je voudrais....

    FILE *file;
    int tab;
    if((file = fopen("laby.txt", "r")) != NULL) // lecture du fichier laby.txt
    {
    while (!feof(file))
    {
    fread(&tab, 1, 1, file);
    printf("%c", tab);
    }
    }
    fclose(file);


    ceci affiche bien la suite de 1 et de 0 en ligne
    Le premier problème est que je voudrais que au bout d'un certains nombre de chiffre il y a un retour à la ligne.
    Le deuxième problème est que pour tout les 1 il s'affiche une case grise et tout les 0 rien

    En fait c'est faire une sorte de labyrinthe.

    Merci pour votre aide

    -----

  2. #2
    Jack
    Modérateur

    Re : aide pour inserer et manipuler un fichier .txt en C

    Le premier problème est que je voudrais que au bout d'un certains nombre de chiffre il y a un retour à la ligne.
    combien? Il suffit de compter les caractères, de tester la valeur du compteur et d'insérer un saut de ligne.

    Le deuxième problème est que pour tout les 1 il s'affiche une case grise et tout les 0 rien
    Si tu ouvres le fichier .txt avec notepad par exemple, tu vois bien les 0 et les 1?

    A+

    PS: utilise les balises code, c'est plus lisible:
    Code:
    FILE *file;
    int tab;
    if((file = fopen("laby.txt", "r")) != NULL) // lecture du fichier laby.txt
    {
       while (!feof(file))
       {
          fread(&tab, 1, 1, file);
          printf("%c", tab);
       }
    }
    fclose(file);

  3. #3
    invitef838f58f

    Re : aide pour inserer et manipuler un fichier .txt en C

    Citation Envoyé par Jack Voir le message
    combien? Il suffit de compter les caractères, de tester la valeur du compteur et d'insérer un saut de ligne.
    [/CODE]
    par exemple ma suite de chiffre est (tout en ligne):
    111111111111000000000110111011 101101000001011010101010110000 000001101010101011010000010110 111011101100000000011111111111 1
    et pour cette série il faut un retour à la ligne après 11 chifres pour avoir 11 colonnes

  4. #4
    invitef838f58f

    Re : aide pour inserer et manipuler un fichier .txt en C

    j'ai trouvé un moyen mais avec un autre code,

    j'ai transformé le fichier txt de cette façon: (il y a comme ça déjà des retours à la ligne):
    11111111111
    10000000001
    10111011101
    10100000101
    10101010101
    10000000001
    10101010101
    10100000101
    10111011101
    10000000001
    11111111111


    et voici le code :
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>


    int main(int argc, char *argv[]) {
    FILE *fic;
    int nb_lignes;
    char ligne_lue[512];


    // ouverture du fichier
    fic = fopen("labysmall.txt", "r"); // ouvrir en lecture


    // compter et afficher les lignes du fichier
    nb_lignes = 0;
    while(fgets(ligne_lue, 512, fic) != NULL){
    printf("\t%s", ligne_lue);
    nb_lignes++;
    }
    printf("\nle fichier comporte %d lignes\n",nb_lignes);

    // fermeture du fichier
    if(fclose(fic) == EOF) {
    printf("Probleme de fermeture du fichier");
    exit(1);
    }

    return 0;
    }


    mais maintenant je voudrais faire en sorte que pour chaque 1 il s'affiche une case grise noire et pour chaque 0 il y a un vide
    soit en utilisant le code ascii, il me semble 219 pour la manip du 1

    mais je n'arrive pas à le coder

  5. A voir en vidéo sur Futura
  6. #5
    invite895675d5

    Re : aide pour inserer et manipuler un fichier .txt en C

    T'aurais pu faire ça pour le saut de ligne :
    Code:
    FILE *file;
    int tab;
    int compteur = 0;
    if((file = fopen("laby.txt", "r")) != NULL) // lecture du fichier laby.txt
    {
       while (!feof(file))
       {
          fread(&tab, 1, 1, file);
          printf("%c", tab);
          Compteur++;
          if(compteur==11)
          {
             printf("\n");
             Compteur=0;
          }
       }
    }
    fclose(file);
    Pour l'affichage :
    tu as essayé, au lieu de : printf("%c", tab);
    Code:
    if (tab=='1')
      printf("%c", 219);
      /*attention si 219 est le code héxadécimal, il faut mettre 0x219*/
    else
      printf(" "); //un espace

  7. #6
    Jack
    Modérateur

    Re : aide pour inserer et manipuler un fichier .txt en C

    Je t'ai pourtant demandé d'utiliser les balises code. C'est quand même plus facile pour lire ton programme lorsqu'il est indenté !

    mais maintenant je voudrais faire en sorte que pour chaque 1 il s'affiche une case grise noire et pour chaque 0 il y a un vide
    soit en utilisant le code ascii, il me semble 219 pour la manip du 1

    mais je n'arrive pas à le coder
    oui, 219 affiche un rectangle noir.
    la fonction fgets renvoie le nombre de caractères effectivement lus. Après chaque fgets, il suffit de faire une boucle analysant le buffer de réception ligne_lue caractère par caractère et d'aficher un espace pour un 0 et un caractère 219 pour un 1.

    A+

  8. #7
    invitef838f58f

    Re : aide pour inserer et manipuler un fichier .txt en C

    en effet bzh-nicolas,
    ton code marche très bien aussi (attention juste à l'écriture de compteur qui devient Compteur)
    mais le fait de remplacer printf("%c", tab); par ta manip me fait rien afficher du tout



    Citation Envoyé par Jack Voir le message
    Après chaque fgets, il suffit de faire une boucle analysant le buffer de réception ligne_lue caractère par caractère et d'aficher un espace pour un 0 et un caractère 219 pour un 1.
    Justement cette partie je n'y arrive pas.
    Il faut que je fasse l'analyse dans ma boucle while ou en dehors après?
    Et comment je vais écrire cette analyse?

    merci

  9. #8
    Jack
    Modérateur

    Re : aide pour inserer et manipuler un fichier .txt en C

    Justement cette partie je n'y arrive pas.
    Il faut que je fasse l'analyse dans ma boucle while ou en dehors après?
    Je ne comprends pas ce qui te bloque.
    Quelque chose du genre devrait suffire (code non testé):

    Code:
    nbCar = fgets(buffer, ..., ..);
    for (i=0; i<nbCar; i++)
       if (buffer[i] == 1)
          printf("%c", 219);
       else  // buffer[i] == 0
          printf(" ");
    // etc.
    A+

  10. #9
    invitef838f58f

    Re : aide pour inserer et manipuler un fichier .txt en C

    en fait je suis allé voir ailleur aussi, et je tombe sur ce buffer
    dsl mais j'arrive pas à me faire une idée sur ce que représente buffer

  11. #10
    Jack
    Modérateur

    Re : aide pour inserer et manipuler un fichier .txt en C

    alors remplace buffer par ligne_lue (cf ton message#4). C'est un simple tableau de caractères.

    A+

  12. #11
    invite895675d5

    Re : aide pour inserer et manipuler un fichier .txt en C

    buffer est tout simplement un tableau de char (voir le prototype de fgets que tu as toi-même utilisé).
    J'ai l'impression qu'il te manque pas mal de base au niveau de la programmation et surtout de l'algorithmique.
    Si tu n'as pas une date butoir trop proche (je suppose que ce n'est pas un programme que tu fais de toi même mais quelque chose qui t'a été demandé dans le cadre du boulot ou d'un cours), tu devrais reprendre les bases au plus vite, car là, tout le monde va te filer un petit bout de code par-ci, par-là. Tu vas les rassembler tant bien que mal (peut-être avec notre aide) mais tu ne vas pas forcément comprendre le code, donc ça ne te sera pas très utile.

  13. #12
    invitef838f58f

    Re : aide pour inserer et manipuler un fichier .txt en C

    c'est vrai que j'ai quelques soucis

    sinon merci pour vos informations, j'ai mis le comparatif et voici mon nouveau code:

    Code:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    int main(int argc, char *argv[]) {
      FILE *fichier_txt;
      int nb_lignes=0;
      int nb_colonnes=0;
      char ligne_lue[512];
      int nbCar=0,i=0;
    
    
    
    
      // ouverture du fichier
      fichier_txt = fopen("laby.txt", "r"); // ouvrir en lecture
    
    
      // compter les lignes et colonnes et afficher les lignes du fichier
      nb_lignes = 0;
      while(fgets(ligne_lue, 512, fichier_txt) != NULL){
    
       nbCar = fgets(ligne_lue,512,fichier_txt);
        for (i=0; i<nbCar; i++)
       {if (ligne_lue[i] == 1)
          printf("%c", 219);
       else
          printf(" ");}
    
        nb_colonnes = strlen(ligne_lue);
        nb_lignes++;
      }
      printf("\n\nle laby comporte %d lignes et %d colonnes\n",nb_lignes,nb_colonnes);
    
    
    
    
      // fermeture du fichier
      if(fclose(fichier_txt) == EOF) {
          printf("Probleme de fermeture du fichier");
          exit(1);
      }
    
    
      return 0;
    }
    le soucis c'est que une fois compilé, la console s'ouvre et défile à une vitesse fole et un message dit qu'il arrete le fonctionnement, je regarde quand même le résultat mais seulement par endroit s'affiche des cases noires.

    est-ce que le problème peut aussi venir du fait que dans mon fichier txt les 1 et 0 sont sous cette forme:
    11111
    10011
    11001
    11111
    j'ai fait des sauts de ligne et ça ressemble déjà à une matrice

  14. #13
    invite895675d5

    Re : aide pour inserer et manipuler un fichier .txt en C

    Là tu lis 2 lignes à chaque tours de boucle : tu appelles 2 fois fgets.
    Et tu n'insères pas de saut de lignes donc tu ne retrouveras pas la présentation de ton fichier d'origine. Tu dois en mettre un chaque fois que tu as finis de traiter une ligne du fichier.

Discussions similaires

  1. Conversion d'un fichier .txt et un fichier .mat Matlab/Simulink
    Par invite5533d885 dans le forum Électronique
    Réponses: 0
    Dernier message: 13/08/2010, 23h54
  2. Matlab Lecture de n fichier .txt et ecriture dans un fichier .xls
    Par invite24513ab6 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 26/07/2010, 10h12
  3. Excel: Créer fichier .txt
    Par Hoedus dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 08/07/2010, 09h40
  4. Matlab boucle pour modifier le nom de plusieur fichier data1.txt data2.txt et test1 test2
    Par invite51a13d50 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 20/04/2009, 18h58
  5. adresse ip dans un fichier txt
    Par invite3a1051d7 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 25/11/2006, 13h06