Bonjour
J'essaie d'écrire des donnés brut dans un fichier puis de les lire.
Plus précisément j'essaie d'écrire 81 entiers d'un tableau dans un fichier.
fopen et fwrite ne revoie pas d'erreur mais fread ne lis aucun caractère.

Le but de la structure et d'avoir de quoi travailler proprement dans un sudoku et à un niveau un peu plus élevée.
Voilà le code :

le main

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
#include "struct.h"
#include <stdlib.h>
#include <stdio.h>
 
int main()
{ 
  sudoku S1= creer();
  sudoku S2=NULL;
  writeValeur(S1,0,0,1);
  printf("S1 :\n");
  affiche(S1);
  sauver(S1,"essai.sdk");
  S2=charger("essai.sdk");
  printf("S2 :\n");
  affiche(S2);
  return 1;
}
Le fichier struct.c

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
void sauver(sudoku S,char* nom)
{
  FILE* pFichier=NULL;
  testSuNull(S,"sauver");
  pFichier=fopen(nom,"w");
  if (pFichier==NULL)
    erreur("sauver","ipossible d'ouvrir le fichier");
  if(fwrite(S,sizeof(int),81,pFichier)!=81)
    erreur("sauver","impossible d'ecrire dans le fichier"); 
}
 
sudoku charger(char* nom)
{
  FILE* pFichier=NULL;
  sudoku S=creer();
  int i;
  pFichier=fopen(nom,"r");
  if (pFichier==NULL)
    erreur("charger","ipossible d'ouvrir le fichier");
  i=fread(S,sizeof(int),81,pFichier);
  fprintf(stderr,"i = %d\n",i);
  if(i!=81)
      erreur("charger","fichier corrompu");
  return S;
}
Et voila ce qu'affiche bash.

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
mooglwy : ~/Cours/Projet-info/c/redo$make
gcc -c -Wall struct.c
gcc -c -Wall test.c
gcc struct.o test.o -o test
mooglwy : ~/Cours/Projet-info/c/redo$./test 
S1 :
100  000  000
000  000  000
000  000  000
 
000  000  000
000  000  000
000  000  000
 
000  000  000
000  000  000
000  000  000
i = 0
Erreur dans charger : fichier corrompu
Je comprends pas trop d'où peut venir le problème, merci de m'aider.