Bug d'execution pour ecrire dans un fichier en C

Signaler
Messages postés
1
Date d'inscription
samedi 8 novembre 2008
Statut
Membre
Dernière intervention
10 mai 2009
-
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
Bonjour,
je suis encore un novice en C, voici un petit programme qui fait rien de très durs.
Je souhaite enregistrer une phrase lors de la compilation tout semble marcher mais lors de l'execution windows rencontre un problème et marque donc le "Nomduprojet" a rencontré un problème

Voici mon code

#include <stdlib.h>
#include <stdio.h>
#include <time.h>




int main(int argc, char *argv[])
{
FILE* fichier = NULL;
long nom;

int nombreMystere 0, nombreEntre 0, nombredetentatives = 0, choix=0;
int MAX =0, MIN =0;


printf (" ==Menu==\n\n\n");
printf (" choissisez votre mode de jeux\n\n");
printf (" 1. Facile\n\n");
printf (" 2. Moyen\n\n");
printf (" 3. Difficile\n\n");




do
{
scanf("%d", &choix);
if (choix==1)
{
MAX 100, MIN 1 ;
printf (" \n\n");
}
else if ( choix==2 )
{
MAX 1000, MIN 1;
printf (" \n\n");
}
else if (choix==3)
{
MAX 10000, MIN 1;
printf(" \n\n");
}
else
{
printf ("Veuillez entrer un niveaux de difficulte correct:");
}
} while (choix >3);

// Génération du nombre aléatoire

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */

do
{ nombredetentatives++;
// On demande le nombre
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère

if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
} while (nombreEntre != nombreMystere);
printf ("Vous avez reussi en %ld tentatives\n\n", nombredetentatives);


fichier = fopen("jeux.txt", "r+");

if (fichier != NULL)
{
printf("Quel est votre nom ? ");
scanf("%s",nom );
fprintf(fichier, "%s a reussi en %ld tentatives "
,nom, nombredetentatives) ;
fclose(fichier);
}
else
{
// On affiche un message d'erreur si on veut
printf("Impossible d'ouvrir le fichier jeux.txt");
}



system("PAUSE");
return EXIT_SUCCESS;
}

Veuiller m'excuser si mon code n'est pas clair ( et si vous voyez des choses à améliorer faites en moi part javascript:Insert_Emoticon('/imgs2/smile.gif');</time.h></stdio.h></stdlib.h>

2 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])
{
    FILE* fichier = NULL;    int nombreMystere 0, nombreEntre 0, nombredetentatives = 0, choix=0;
    int MAX =0, MIN =0;

    printf (" ==Menu==\n\n\n");
    printf (" Choisissez votre mode de jeu\n\n");
    printf (" 1. Facile\n\n");
    printf (" 2. Moyen\n\n");
    printf (" 3. Difficile\n\n");

    MIN = 1;
    do
    {
        scanf("%d", &choix);
        switch (choix)
        {
            case 1:
                MAX = 100;
                break;
            case 2:
                MAX = 1000;
                break;
            case 3:
                MAX = 10000;
                break;
            default:
                printf ("Veuillez entrer un niveau de difficulte correct:");
        }
        if (choix>0 && choix<4) printf("\n\n");
    }
    while (choix>3 || choix<1);

    // Génération du nombre aléatoire
    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

    // La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère
    do {
        nombredetentatives++;
        // On demande le nombre
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
        // On compare le nombre entré avec le nombre mystère
        if (nombreMystere > nombreEntre) printf("C'est plus !\n\n");
        else if (nombreMystere < nombreEntre) printf("C'est moins !\n\n");
        else printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
    }
    //while (nombreEntre != nombreMystere);
    while (nombreEntre == nombreMystere);

    printf ("Vous avez reussi en %ld tentatives\n\n", nombredetentatives);
    fichier = fopen("jeu.txt", "r+");
    if (fichier != NULL) {
        printf("Quel est votre nom ? ");

        // On crée un buffer de 255 bytes
        // La chaine entrée ne pourra pas dépasser 254 caractères (à cause du \0 en fin)
        char* nom = (char*)malloc(255);
        scanf("%254s",nom);
        fprintf(fichier,"%s a réussi en %ld tentatives",nom,nombredetentatives);
        // On libère le buffer
        free(nom);

        fclose(fichier);
    }
    else {
        // On affiche un message d'erreur si on veut
        printf("ERREUR: Impossible d'ouvrir le fichier jeu.txt\n");
    }
    system("PAUSE");
    return 0;
}
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
Oups, j'ai oublié de virer ma ligne de débug : retire la 2ème ligne et décommentarise la 1ère
    //while (nombreEntre != nombreMystere);
    while (nombreEntre == nombreMystere);