CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

CodeBlocks bug console c

supraloft
supraloft
Niveau 3
14 septembre 2013 à 11:30:12

Bonjour, je programme sur codeblocks et je suis sur un problème qui n'est pas dans la compilation mais dans l’exécution (le programme a cessé de fonctionner). Je précise qu'il s'agit d'un pendu et que j'ai créer un Dico.txt avec un * après chaque mots pour pouvoir les compter. ça bug à "lettre = fgetc(fichier);"
Voici mon code :

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <time.h>
  4. include <windows.h>
  5. include <unistd.h>

int main()
{
int jouer = 1;
while (jouer == 1)
{
int nmot = 0, MIN = 0,MAX = 0, nombremots = 0, place = 0, essai = 0, fin = 0, type = 0, perdu = 0;
char mot[30];
char proposition[30];
char cache[30];
int lettre = 0;
FILE* fichier = NULL;

srand(time(NULL));

system("cls");
printf("Bonjour et bienvenue dans le jeu de pendu !\n");
printf("Rapppel : Le jeu ne gere pas les accents\n");
system("pause");
system("cls");

fichier = fopen("Dico.txt", "r");
rewind(fichier);
fseek(fichier,1,SEEK_SET);
if (fichier = NULL)
{
system("cls");
printf("Erreur de fichier");
system("pause");
}

while (lettre != EOF)
{
lettre = fgetc(fichier);
printf("%c", lettre);
if (lettre == '*')
{
nombremots++;
}
fseek(fichier,1,SEEK_CUR);
}
lettre = NULL;
MAX = nombremots;
nombremots = 0;
rewind (fichier);
nmot = rand() % (MAX - MIN + 1) + MIN;

while (nombremots != nmot-1)
{
lettre = fgetc(fichier);
if (lettre == '*')
{
nombremots++;
}
fseek(fichier,1,SEEK_CUR);
}
fseek(fichier,1,SEEK_CUR);
while (lettre != '*')
{
lettre = fgetc(fichier);
mot[place] = lettre;
place++;
}
lettre = NULL;
type = 0;

while (lettre != '\n')
{
lettre = mot[type];
cache[type] = mot[type];
type++;
}

lettre = NULL;
while (fin != 1)
{
system("cls");
printf("\n Mot : %s\n\n Proposttion : ", &cache);
scanf("%s", &proposition);
while (lettre != '\0')
{
lettre = proposition[type];
type++;
}
lettre = NULL;
if (type == 1)
{
type = 0;
while (lettre != '\0')
{
lettre = mot[type];
type++;

if (lettre == proposition[0])
{
cache[type] = lettre;
}
}

}
else if (type > 1)
{
if (proposition == mot)
{
type = 0;
lettre = NULL;
while (lettre != '\0')
{
cache[type] = mot[type];
type++;
}
}
}

if (cache == mot)
{
system("cls");
printf("Vous avez trouver le mot : %s", &cache);
fin = 1;
}

}

}
}

Pseudo supprimé
Pseudo supprimé 14 septembre 2013 à 11:43:01

Tu peux renvoyer ton code sur ce site s'il te plait ? :

http://pastebin.com/

Déjà tu as une belle erreur dans ta condition if(fichier = NULL) Il te faut mettre deux == car c'est un test, pas un affectation.

supraloft
supraloft
Niveau 3
14 septembre 2013 à 11:54:34

Ouai t'avais raison mais je me rend compte à quel point c'est une erreur de débutant !

Pseudo supprimé
Pseudo supprimé 14 septembre 2013 à 11:58:00

Aussi, pas besoin d'ajouter *, tu peux compter en prenant en compte le caractère de retour à la ligne, '\n'.

Pseudo supprimé
Pseudo supprimé 14 septembre 2013 à 12:18:15

Et aussi, pourquoi essayes-tu de mettre lettre à NULL ? :o))

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment