Lecture et ecriture de variables dans un fichier (save)

Soyez le premier à donner votre avis sur cette source.

Vue 5 493 fois - Téléchargée 328 fois

Description

Salut la-dedans !

Cette source s'adresse aux personnes (debutantes) qui voudraient écrire dans un fichier les valeurs de differents type de variables (comme "124" (int) , "0.1" (float),...) et pouvoir après être capable de les lire.

Je n'ai pas vu de source semblable sur le site, malgré sa simplicité affligente, alors je me suis permis de la mettre. Très utile pour les sauvegardes dans des petits jeux. Donc voila voila ;)

Le prog lancé, allez dans le menu 1 et tapez différentes valeurs. Ceci fini, lorsque vous irez dans le menu 2, les valeurs inscrites dans le fichiers seront lues, selon leur type (int, long, float) et affichée a l'écran.

Bonne prog', a+ !

Source / Exemple :


// Includes
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

// Variables :
int mn_choice;
bool quitMsg=false; // True -> Quitte l'App

int nb_player_lives;
long score_player;
int current_level;
float player_x,player_y,player_z;
 

// Fonctions
int show_menu();
int create_savefile();
int read_savefile();

int main()
{
	
	do{
		show_menu();
	}while(!quitMsg);

	return 1;
}

int create_savefile()
{
	// Pointeur fichier
	FILE *svf;

	// Nombre de vies :
	printf("\nSimulation :\n\n\t* Nombre de vie(s) du joueur (int) : ");
	scanf("%d",&nb_player_lives);

	// Score
	printf("\t* Score (long): ");
	scanf("%ld",&score_player);

	// Niveau courant
	printf("\t* Niveau courant (int) :");
	scanf("%d",&current_level);

	// X position (peut-être un nombre flottant)
	printf("\t* X Position (float) : ");
	scanf("%f",&player_x);
	
	// Y position (peut-être un nombre flottant)
	printf("\t* Y Position (float) : ");
	scanf("%f",&player_y);
	
	// Z position (peut-être un nombre flottant)
	printf("\t* Z Position (float) : ");
	scanf("%f",&player_z);

	// Ouvre le fichier en mode écriture
	svf=fopen("mygame.sav","w+");

	if(!svf) return -1;

	printf("\nLe fichier est prêt a être crée. Appuyez sur une touche pour continuer...\n");
	getch();
	printf("Création du fichier ... ");
	
	// Ecrit dans le fichier mygame.sav
	fprintf(svf,"%d %ld %d %f %f %f",nb_player_lives,score_player,current_level,player_x,player_y,player_z);
    
    // Fermeture du fichier
	fclose(svf);

	printf(" [OK!]\n\n");

	// Succès
	return 1;

}

int show_menu()
{
	printf("*****************************************\n");
	printf("* Tutorial : ECRITURE ET LECTURE DE     *\n");
	printf("*            VARIABLES AVEC FSCANF()    *\n");
	printf("*****************************************\n");
	printf("* Par Thomas PASCAL - thomas@lxgames.org*\n");
	printf("*****************************************\n");
	printf("*    1 - Creer le fichier mygame.sav    *\n");
	printf("*    2 - Lire le fichier mygame.sav     *\n");
	printf("*    3 - Bye-Bye !                      *\n");
	printf("*****************************************\n");
	scanf("%d",&mn_choice);

	if(mn_choice==1) create_savefile();

	if(mn_choice==2) read_savefile(); 

	if(mn_choice==3) quitMsg=true;

	return 1;
}

int read_savefile()
{
	FILE *svf_read;

	// Ici on reinitialise les variables dont on s'est servi pour creer le fichier
	
	current_level=0;
	nb_player_lives=0;
	score_player=0;
	player_x=0.0f;
	player_y=0.0f;
	player_z=0.0f;

	// On ouvre le fichier

	svf_read=fopen("mygame.sav","r");

	if(!svf_read){
		printf("\nVeuillez d'abord cree le fichier mysave.sav !\n\n");
		return -1;
	}

	// On recupere les valeurs des differentes variables dans le fichier
	// grace a la fonction fscanf
	fscanf(svf_read,"%d",&nb_player_lives);
	fscanf(svf_read,"%ld",&score_player);
	fscanf(svf_read,"%d",&current_level);
	fscanf(svf_read,"%f",&player_x);
	fscanf(svf_read,"%f",&player_y);
	fscanf(svf_read,"%f",&player_z);

	fclose(svf_read);

	printf("\n\nSauvegarde lue ! Affichage des valeurs lues :\n\n");
	printf(" - Vies : %d\n - Score : %ld\n - Le joueur est au niveau : %d",nb_player_lives,score_player,current_level);
	printf("\n - X : %f\n - Y : %f\n - Z : %f\n\n\n",player_x,player_y,player_z);

	return 1;

}

Conclusion :


Voila, je pense que vous n'aurez pas vraiment mal a la tête après avoir lu tout
ca :-p ... mais peut-être ca a aidé quelqu'un ..?..

Allé a+ et n'hésitez pour les questions.
(ou si qqchose foire)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
brakemar Messages postés 1 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 4 février 2004
4 févr. 2004 à 13:01
Merci bocou

Jen avai vraimen besoin !

c un bon tutorial ke ta fai là !

Mon prof est trop bidon il explik ke dale mai toi tu gere !!
PierreAd Messages postés 63 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 20 février 2006
27 oct. 2003 à 18:24
Salut !!

bon ben je te remercie, c'est quelque chose que je cherchais depuis pas mal de temps.... sur le net c'est pas évident de trouver des choses sympas, soit on a des cours ultra simples soit des choses pour programmeurs avertis....
voila je vais étudier un peu ça et si j'ai des comments a faire, je reviendrai !!!

ciao !!!

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.