Bug d'execution pour ecrire dans un fichier en C

sebtheboss4 Messages postés 1 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 10 mai 2009 - 10 mai 2009 à 11:50
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 10 mai 2009 à 12:59
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

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
10 mai 2009 à 12:58
#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;
}
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
10 mai 2009 à 12:59
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);
0
Rejoignez-nous