C++ [aide]

Fermé
Yodine - 10 janv. 2012 à 23:19
 Utilisateur anonyme - 13 janv. 2012 à 05:37
Bonsoir,

voila depuis une semaine je programme un jeu en C++ ( puissance 4) et lorsque je dois écrire la fonction qui me permet de sauvegarde une partie j'obtiens des erreurs j'ai beau cherche je ne trouve pas pouvez vous m'aidez svp et aussi m'expliquer mes erreurs merci d'avance.

int SauverPartie ( int etatPartie)
{
ptFile = fopen("partie.txt","wt");
if(ptFile == NULL)
{
printf("ERROR");
return(EXIT_FAILURE);
}

else
{
fprintf(ptFile,"-\n");
fprintf(ptFile, "%d" , Partie[i]);


fclose(ptFile);
}
}

3 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
Modifié par KX le 10/01/2012 à 23:27
int SauverPartie (int etatPartie)
1) tu dois avoir un return dans tous les cas (tu n'en as pas dans le else)
2) tu ne te sers jamais de etatPartie

return(EXIT_FAILURE);
3) ça n'a pas vraiment de sens dans une fonction

fprintf(ptFile, "%d" , Partie[i]);
4) qu'est-ce que c'est Partie ?

Remarque : tu utilises fopen, et fprintf qui sont des fonctions du C, en C++ tu as ofstreamLa confiance n'exclut pas le contrôle
0
merci d'avoir repondus a mon post :

1) je sais que je devrais avoir un return mais je ne sais pas ou le placer j'ai donc glisser se return dans la partie écriture du fichier. ce qui me donne :

int SauverPartie ( int etatPartie)
{
ptFile = fopen("partie.txt","wt");
if(ptFile == NULL)
{
printf("ERROR");
}

else
{
fprintf(ptFile,"-\n");
fprintf(ptFile, "%d" , Partie[i]);
return(0);

fclose(ptFile);
}
}

2) je sais aussi que je ne me sert pas de etatPartie mais je ne sais pas a quelle moment je devrais m'en servir .....
0
Utilisateur anonyme
11 janv. 2012 à 04:30
Salut,

Comme dit par KX, il s'agit plus de C que de C++, mais ce n'est pas grave.

int SauverPartie (int etatPartie){
    ptFile = fopen("partie.txt", "wt");

    if(ptFile == NULL){
        fprintf(stderr, "ERROR");
        return(1);
    {
     else{
         fprintf(ptFile, "-\n");
         fprintf(ptFile, "%d", Partie[i]);
         fclose(ptFile);
     }
}


L'erreur que tu faisais, c'était le return(0); avant de fermer ton fichier. Celà avait pour effet de quitter ta fonction SauverPartie avant de fermer le fichier.

Quelques liens du site du zéro qui pourrait te servir :
Tutoriel sur le C
Tutoriel sur le C++

@++ :- )
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
11 janv. 2012 à 07:50
Le return 0 avant de fermer le fichier n'est pas gênant en cas d'erreur puisque le fichier ne sera alors pas ouvert. Non ce qui est plus embêtant c'est de ne pas avoir un return dans tous les cas.

if (...)
{
    ....
    return 1;
}
else
{
    ...
    return 0;
}

Remarque : si c'est juste pour renvoyer 0/1, autant renvoyer un booléen (true/false)
0
Utilisateur anonyme
13 janv. 2012 à 05:37
Je sais que le problème n'est pas à cause qu'il retourn quelque chose avant de fermer le fichier en cas d'erreur. Le problème est plutôt quand il n'y a pas d'erreur que ça cause un problème.

Sinon, que ce soit 0 ou true c'est la même chose sauf que ça demande 3 caractères de moins ^^
0