Fonction de sauvegarde de tableau et de lecture de sauvegarde en c

Description

Ce code peut etre utilisé dans un programme pour sauvegarder puis lire des tableaux ou des données à partir d'un fichier texte, il dispose d'une fonction de sauvegarde, une fonction de lecture, une fonction d'affichage et une fonction de remplissage aléatoire des tableaux. La sauvegarde se fait dans le fichier svg.txt.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>
#define N 20

/* On declare les deux tableaux global */
int pb[N][N];
int tir[N][N];

/* On remplit les deux tableaux aléatoirement */
int init()
{
int i,j;

for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
{
pb[i][j]=rand()%10;
tir[i][j]=rand()%10;
}
}

}

/* On Affiche les deux tableaux */ 
int affichage()
{
int i,j;

for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
{

printf("%2d",pb[i][j]);
}
printf("\n");
}

printf("\n");
printf("\n");
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
{

printf("%2d",tir[i][j]);
}
printf("\n");
}

}
/* On charge les deux tableaux l'un apres l'autre */
int load()
{
/* Pointeur  */
FILE * open;
int i,j,n;
/* Pointeur ouvre le fichier en mode lecture */
open = fopen ("svg.txt", "r");
for (i=0;i<20;i++)
{
for (j=0;j<20;j++)
{
/* On recupere les caracteres un à un */
n = fgetc(open);

pb[i][j] = n;

}
}

for (i=0;i<20;i++)
{
for (j=0;j<20;j++)
{
/* meme chose pour le second tableau */
n = fgetc(open);

tir[i][j] = n;

}
}

}

int save()

{
int i,j,n;
/* Deux pointeurs sont necessaires */
FILE * write1;
FILE * write2;

/* On ecrase le fichier précédent grace au mode "w" */
fopen ("svg.txt", "w");

/* On positionne le pointeur à la fin du fichier grace au mode "a" */
write1 = fopen ("svg.txt", "a");

for (i=0;i<20;i++)
{
for (j=0;j<20;j++)
{
/* On recupere un à un les caracteres */
n = pb[i][j];
fputc(n,write1);
}
}

/* On ferme le fichier */
fclose (write1);
/* Meme operation pour le second tableau */
write2 = fopen ("svg.txt", "a");
for (i=0;i<20;i++)
{
for (j=0;j<20;j++)
{

n = tir[i][j];
fputc(n,write2);

}
}
fclose (write2);
/* Cette operation pourrait etre réalisée sur autant de données differentes 
que possibles si elles sont les unes à la suite des autres, certains 
compilateurs autorisent l'utilisation d'un pointeur unique */
}

main ()
{
int i,j,n;
/* initialisation de la fonction rand */
srand(time(NULL));
/* Menu de choix */
while (1)
{
printf("Voulez vous charger l'ancien tableau (1) ou en ecrire un nouveau  puis le sauvegarder (2)");
scanf("%d",&n);
switch (n)
{
case 1: load(); affichage(); break;
case 2: init(); affichage(); save(); break;

}
getch();
}
}

Conclusion :


Ce programme n'est pas utile en soi mais peut servir pour sauvegarder un jeu, au hasard.. une bataille navale...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (VonCarstein)