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

[C] problème d'initalisation de fichier

vexover
vexover
Niveau 9
29 juin 2006 à 20:00:43

Salut tout le monde .
Bien voilà j´ai un petit problème dans un de mes codes : je suis entrain d´écrire un système de combat en C, mais le problème est que j´ai besoin d´effectuer une sauvegarde et que je n´arrive pas a initialiser un fichier texte me le permettan, pourtant mon code d´initialisation semble bon :

  1. include <stdlib.h>
  2. include <stdio.h>

int main(int argc, char *argv[])
{

FILE* fichier = NULL;

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

system("PAUSE");
return 0;
}

le fichier plante à la ligne fclose("fichier"); apparement .
le problème est la ligne " FILE* fichier = NULL;" car si l´on rajoute un algorithme de conditions du genre :

if ( fichier == NULL )
{
return 0;
}

et bien le programme femre automatiquement juste aprè le lancement, cela veut donc dire que fichier est encore egal à NULL . quelqu´un aurait t ´il une idée de la provenance du problème ?

Matbox2
Matbox2
Niveau 7
29 juin 2006 à 20:59:57

Si fichier reste à la valeur nulle cela signifie que le fichier test.txt n´a pas pu être ouvert (soit tu as mal indiqué le chemin du fichier soit il existe pas). Vérifies que le chemin indiqué est le bon ou que le fichier test.txt existe.

vexover
vexover
Niveau 9
29 juin 2006 à 21:10:27

Ben comme tu peux le voir je n´ai mis aucun chemin, donc le fichier devrait être créer dans le même dossier que l´exe par default je me trompes ?
Et je dis bien créer car normalement le fichier est créer a l´execution du programme, il n´y a donc pas besoin de le faire manuellement comme tu me l´as conseiller. Je vais quand même éssayer manuellement merci beaucoup de ton aide ^^.

vexover
vexover
Niveau 9
29 juin 2006 à 21:18:22

Même en créant manuellement le fichier ça ne marche pas ...

dnob700
dnob700
Niveau 10
29 juin 2006 à 22:22:34

fichier est une variable de type FILE* alors que "fichier" est une chaine de caractère qui ne veut rien dire.

Utilise :
fclose(fichier); pour fermer le fichier représenté par la variable fichier. (et non pas fclose("fichier");).

D´autre part, c´est sur que si tu mets :
if ( fichier == NULL )
{
return 0;
}

juste après:
FILE* fichier=NULL;

faut pas t´étonner de ce que le programme se ferme : tu lui dit d´abord fichier vaut maintenant 0, et juste après tu lui dit : si fichier vaut 0 (évidemment, tu viens de lui dire de valoir 0) quitte. donc bien sur, il quitte.

Par contre, avex "r+" dans la focntion fopen, si le fichier n´existe pas, la fonction rate. Utilise "w+" pour créer le fichier. Mais attention, là, s´il existe, il sera détruit. (il y a un truc panaché, c´est "a+", mais là le pointeur est à la fin du fichier par défaut, donc ce n´est pas terrible.

vexover
vexover
Niveau 9
30 juin 2006 à 14:36:04

En effet le problème venait des "" de fclose merci beaucoup de ton aide. Mais pour la boucle qui ferme le programme si fichier = NULL je l´avais placer après la ligne :
fichier = fopen("test.txt", "r+");
donc si l´initialisation avait marcher le programme aurait dû marcher correctement, mais c´est bien le r+ qui genait avec W+ cela marche .: Encore merci .

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