1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2015
    Messages : 143
    Points : 80
    Points
    80

    Par défaut sauvegarder sous fichier text

    Bonjour,

    J’une un tableau 3d Mt (i,j,k), je veux sauvegarder le tableau sous forme fichier .text .
    Le but consiste à enregistrer chaque bloc du tableau Mt ( : , :,k) dans un fichier nom_fichier k .text
    Merci pour votre aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include<stdio.h>
    #include<math.h>
     
    #define vs 11
    #define Flasheffet 3
      void getArray12(float (*Mt)[vs][Flasheffet])
    {
        int i,j,k;
     
           for (i = 0; i < vs; i++)
        {
            for (j = 0; j < vs; j++)
            {
                for (k = 0; k < Flasheffet; k++)
                 {
               Mt[i][j][k]=k;
                 }
            }
        }
    }
     
    void getArray12(float (*Mt)[vs][Flasheffet]);
    int main()
    {
        int i, j,k;
     
        float Mt[vs][vs][Flasheffet];
     
     
        getArray12(Mt);
     
       for(k = 0; k < Flasheffet; ++k ) {
           printf("Mtt %d: \n",k);
           for(i = 0; i < vs; ++i) {
            for (j = 0; j < vs; ++j) {
     
                    printf("%lf ",Mt[i][j][k]);
     
            }  
      printf("\n"); 
        }
        printf("\n");
       }
     
     
    }

  2. #2
    Membre expert
    Inscrit en
    mars 2005
    Messages
    1 315
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 315
    Points : 3 843
    Points
    3 843

    Par défaut

    J'ai pas bien saisi l'énoncé du problème mais puisque tu dump déjà le contenu du tableau vers stdout (i.e., tu l'affiches) alors c'est à la portée de fprintf, je pense.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2015
    Messages : 143
    Points : 80
    Points
    80

    Par défaut sauvegarder sous fichier text

    Je vous explique:
    dans un premier temps (juste pour comprendre) je veux stocker la matrice Mt ( le retour du code ci-dessus )dans un fichier text par exemple
    (test.txt).
    j'ai essayé de faire un programme, qui permet d'écrire dans le fichier test le tableau Mt mais il y avait une erreur…
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    int main()
    {
    	int i, j,k;
     
    	float Mt[vs][vs][Flasheffet];
        FILE* fichier = NULL;
        getArray12(Mt);
        fichier = fopen("test.txt", "w");
         if (fichier != NULL)
    {
       for(k = 0; k < Flasheffet; ++k ) {
    	   printf("Mtt %d: \n",k);
    	   for(i = 0; i < vs; ++i) {
            for (j = 0; j < vs; ++j) {
     
               fprintf(fichier,"%lf ",Mt[i][j][k]);
     
     
            }  
      fprintf("\n"); 
    	}
    	fprintf("\n");
       }
    }
    else
    {
    	  printf("Impossible d'ouvrir le fichier test.txt");
    }
          fclose(fichier); 
          return 0;
    }

    une fois ce problème résolu, mon but consiste de créer un certain nombre de fichier (le nombre est égal à la dimension 3 du tableau Mt) et de stocker chaque bloc du tableau Mt (le bloc s'agit d'un tableau Mt(:,:,k)) dans un fichier txt.

  4. #4
    Membre expert
    Inscrit en
    mars 2005
    Messages
    1 315
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 315
    Points : 3 843
    Points
    3 843

    Par défaut

    Citation Envoyé par conanran Voir le message
    j'ai essayé de faire un programme, qui permet d'écrire dans le fichier test le tableau Mt mais il y avait une erreur…
    Laquelle ?

  5. #5
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    mars 2009
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : mars 2009
    Messages : 513
    Points : 364
    Points
    364
    Billets dans le blog
    3

    Par défaut

    c'est intéressant , tu as déjà réponse aux questions que tu poses .
    Puisque tu sais ouvrir un fichier puis y enregistrer des éléments de
    tableau alors tu peux aussi bien ouvrir 3 fichiers afin d'y enregistrer
    chacune des dimensions de ta matrice puisque visiblement tu as
    acquis connaissance des boucles imbriquées !! non ?

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2015
    Messages : 143
    Points : 80
    Points
    80

    Par défaut sauvegarder sous fichier

    @exe2bin
    c'est facile dans le cas ou la dimension 3 du tableau est égal à 3 mais dans le cas ou la dimension est égal à n, n=100 par exemple.
    pour cela je cherche une méthode, si possible, de créer des fichiers text automatiquement.
    cdr: créer des fichiers automatiquement, ouvrir et stocker ...

  7. #7
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    mars 2009
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : mars 2009
    Messages : 513
    Points : 364
    Points
    364
    Billets dans le blog
    3

    Par défaut

    Citation Envoyé par conanran Voir le message
    @exe2bin
    c'est facile dans le cas ou la dimension 3 du tableau est égal à 3 mais dans le cas ou la dimension est égal à n, n=100 par exemple.
    pour cela je cherche une méthode, si possible, de créer des fichiers text automatiquement.
    cdr: créer des fichiers automatiquement, ouvrir et stocker ...
    LOL !! Des tableaux à 100 dimensions ! J'aimerais le voir un jour ....

    Blague à part qu'entends tu exactement par "créer des fichiers automatiquement ..." ?
    Veux tu dire générer des noms de fichiers automatiquement ?

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 369
    Points : 23 006
    Points
    23 006

    Par défaut

    Citation Envoyé par conanran Voir le message
    la dimension 3 du tableau est égal à 3 mais dans le cas ou la dimension est égal à n, n=100 par exemple.
    on parle toujours de dimension où tu parles d'ordonnalité/nombre d'éléments de la dernière dimension maintenant ? Auquel cas, ce pourrait être 3, 100 ou 10000000 la différence est négligeable et ne devrait rien changer au code qui se contente de parcourir les éléments d'une dimension donnée.
    Si le problème est le nombre de dimension : il est possible de faire un parcours récursif de chaque dimension. Mais globalement tu n'attaques pas un problème à 3 dimensions et 100 dimensions de la même manière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for(k = 0; k < Flasheffet; ++k ) {
    	   printf("Mtt %d: \n",k);
    	   for(i = 0; i < vs; ++i) {
            for (j = 0; j < vs; ++j) {
     
               fprintf(fichier,"%lf ",Mt[i][j][k]);
     
     
            }  
      fprintf("\n"); 
    	}
    	fprintf("\n");
       }
    En plus d'être très mal indenté, ce code est un gouffre à perf, il va générer un cache-miss à (quasiment) chaque valeur itérée.
    Cette structure n'est pas vraiment adaptée à ton problème imo.
    En gardant cette structure, il faudrait avoir un tableau de fichiers à côté pour utiliser le bon et parcourir Mt "dans l'ordre".
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2015
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2015
    Messages : 143
    Points : 80
    Points
    80

    Par défaut sauvegarder sous fichier text

    @exe2bin
    je veux dire la taille de la troisième dimension est égal à 100...
    donc je cherche à créer automatiquement 100 fichiers .text pour enregistrer chaque bloc

  10. #10
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    mars 2009
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : mars 2009
    Messages : 513
    Points : 364
    Points
    364
    Billets dans le blog
    3

    Par défaut

    Citation Envoyé par conanran Voir le message
    @exe2bin
    je veux dire la taille de la troisième dimension est égal à 100...
    donc je cherche à créer automatiquement 100 fichiers .text pour enregistrer chaque bloc
    Je crois comprendre ; tu sais déjà créer puis ouvrir et enfin écrire dans un fichier ; donc il te faut 100 noms de fichier différents :
    une solution consiste à initialiser le nom du premier fichier ,par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char *fichName = "fichier";
    en suivant et à pour chaque nouveau nom tu concatène (strcat()) une autre chaîne : "000.txt"
    ce qui donne "fichier000.txt" dont tu te sers dans fopen().
    Pour chaque nouveau nom tu joints une nouvelle extension ,001.txt,002.txt,003.txt .... etc jusqu'à 0099.txt
    À toi de trouver la méthode pour le faire.

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    6 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 6 407
    Points : 17 901
    Points
    17 901
    Billets dans le blog
    1

    Par défaut

    Bonjour
    Citation Envoyé par conanran Voir le message
    donc je cherche à créer automatiquement 100 fichiers .text pour enregistrer chaque bloc
    Citation Envoyé par exe2bin Voir le message
    une solution consiste à initialiser le nom du premier fichier ,par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char *fichName = "fichier";
    en suivant et à pour chaque nouveau nom tu concatène (strcat()) une autre chaîne : "000.txt"
    ce qui donne "fichier000.txt" dont tu te sers dans fopen().
    Pour chaque nouveau nom tu joints une nouvelle extension ,001.txt,002.txt,003.txt .... etc jusqu'à 099.txt
    Petite précision : la concaténation ne peut pas se faire sur la variable "fichName" car celle-ci n'est qu'un pointeur vers une zone statique (donc non modifiable) de la mémoire.
    Il faut donc définir une seconde variable apte à stocker et la racine du nom (donc ici "fichier") ; et la chaine contenant le nombre ("XXX") ; et l'extension ".txt" ; et le caractère '\0' terminant toute chaine. Donc clairement un tableau de char.
    Et au lieu d'utiliser strcat() (ok c'est faisable mais pas super pratique) je passerais plutôt par sprintf().
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment ouvrir un fichier text sous Java ?
    Par mpascolo dans le forum IO
    Réponses: 6
    Dernier message: 11/10/2006, 14h59
  2. transfert des données d'un fichier text vers un fichier excel sous VB
    Par insane_80 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/09/2006, 13h32
  3. Problème à l'exportation sous fichier texte
    Par Drozo dans le forum Access
    Réponses: 2
    Dernier message: 04/09/2006, 15h45
  4. [TP] Création fichier texte lisible sous Windows
    Par frechy dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 02/03/2006, 20h42
  5. feof et fichier texte sous unix
    Par Magicmax dans le forum C
    Réponses: 7
    Dernier message: 07/12/2005, 08h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo