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
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 #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; }
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
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; }
Je comprends pas trop d'où peut venir le problème, merci de m'aider.
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![]()
Partager