Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2954 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Ecrire le contenu d'une matrice dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Ecrire le contenu d'une matrice dans un fichier

n°917511
compuman10​1
Posté le 07-12-2004 à 22:26:36  profilanswer
 

Code :
  1. #define taille 5
  2.     int **matrice;
  3.     matrice = (int**)malloc(sizeof(int)*taille);
  4.     /* Initialisation */ 
  5.     for (i=0; i<taille; i++)
  6.     {
  7.         matrice[i] = (int*)malloc(sizeof(int)*taille);
  8.         for (j=0; j<taille; j++)
  9.                 matrice[i][j] = rand()/1000;
  10.     }   
  11.     /* Génération du fichier */
  12.     fichier = fopen("fichier.txt","w" );
  13.     if (fichier == NULL) printf("Erreur lors de la création du fichier" );
  14.     for (i=0; i<taille; i++)
  15.     { 
  16.         for (j=0; j<taille; j++)
  17.          {
  18.              fwrite(&(matrice[i][j]), sizeof(int), 1, fichier);
  19.              fwrite(" ", sizeof(int), 1, fichier);
  20.          }       
  21.     }


 
 
VOila, dans l'idéal je voudrai afficher chaque ligne de la matrice sur une ligne dans le fichier, les valeurs étaient séparées par des espaces.
 
Le problème vient de la ligne 21, apparement &(matrice[i][j]) n'est pas valide.
 
J'ai essayé matrice[i][j] sans succès :(


Message édité par compuman101 le 07-12-2004 à 22:28:21

---------------
Comparez DVD Vierges, Graveurs de DVD et Boutiques en ligne
mood
Publicité
Posté le 07-12-2004 à 22:26:36  profilanswer
 

n°917623
matafan
Posté le 07-12-2004 à 23:55:30  profilanswer
 

Ben si tu fais fwrite(&(matrice[i][j]), sizeof(int), 1, fichier), tu ecrit la valeur binaire qui se trouve dans ta matrice... Alors que j'imagine que tu veux ecrire sa representation decimale. Utilises fprint.
 
Et puis une note en passant : sizeof (int) n'est pas forcement egal a sizeof (int *)...

n°918277
Emmanuel D​elahaye
C is a sharp tool
Posté le 08-12-2004 à 20:13:22  profilanswer
 

compuman101 a écrit :


<snip>
Le problème vient de la ligne 21, apparement &(matrice[i][j]) n'est pas valide.


Ce code ne compile pas pour de nombreuses raisons. Il serait préférable que tu postes du code complet pour qu'on soit dans les mêmes conditions que toi...
 
Après réparations, ce code (à lire avec soin. Poser des questions si nécessaire):

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #define taille 5
  4. int main (void)
  5. {
  6.    int **matrice = malloc (sizeof *matrice * taille);
  7.    if (matrice != NULL)
  8.    {
  9.       /* Initialisation */
  10.       {
  11.          int i;
  12.          for (i = 0; i < taille; i++)
  13.          {
  14.             int j;
  15.             matrice[i] = malloc (sizeof *matrice[i] * taille);
  16.             for (j = 0; j < taille; j++)
  17.             {
  18.                matrice[i][j] = rand () / 1000;
  19.             }
  20.          }
  21.       }
  22.       /* Generation du fichier */
  23. #define FNAME "fichier.txt"
  24.       {
  25.          FILE *fichier = fopen (FNAME, "w" );
  26.          if (fichier == NULL)
  27.          {
  28.             perror (FNAME);
  29.          }
  30.          else
  31.          {
  32.             int i;
  33.             for (i = 0; i < taille; i++)
  34.             {
  35.                int j;
  36.                for (j = 0; j < taille; j++)
  37.                {
  38.                   fprintf (fichier, "%5d", matrice[i][j]);
  39.                }
  40.                fprintf (fichier, "\n" );
  41.             }
  42.          }
  43.       }
  44.       /* Liberation de la matrice */
  45.       {
  46.          int i;
  47.          for (i = 0; i < taille; i++)
  48.          {
  49.             free (matrice[i]), matrice[i] = NULL;
  50.          }
  51.          free (matrice);
  52.       }
  53.    }
  54.    system ("pause" );
  55.    return 0;
  56. }


produit le fichier "fichier.txt" contenant


    0    0   10    1   11
    7   17    6   22   31
    9   14    3   22   18
    1    5   26   22   25
   27   31    7   13   31


et il libère la mémoire correctement...


Message édité par Emmanuel Delahaye le 08-12-2004 à 20:30:58

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Ecrire le contenu d'une matrice dans un fichier

 

Sujets relatifs
pb manipulation buffer fichier texteTest du contenu d'une variable
Ecrire dans un fichier excelprobleme ecriture fichier
Transfert d'un fichier HTTP > FTP ( serveur > serveur )Test d'existance d'un fichier
Fichier Manifest pour les exe OK... Mais pour les ocx ?fichier texte easyphp
fichier .js dans php 
Plus de sujets relatifs à : [C] Ecrire le contenu d'une matrice dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR