C++ [aide]
Yodine
-
Utilisateur anonyme -
Utilisateur anonyme -
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);
}
}
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
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
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 .....
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 .....
Salut,
Comme dit par KX, il s'agit plus de C que de C++, mais ce n'est pas grave.
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++
@++ :- )
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++
@++ :- )
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.
Remarque : si c'est juste pour renvoyer 0/1, autant renvoyer un booléen (true/false)
if (...) { .... return 1; } else { ... return 0; }
Remarque : si c'est juste pour renvoyer 0/1, autant renvoyer un booléen (true/false)