begin process at 2012 05 30 02:08:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

Probleme avec FILE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme avec FILE

dimanche 24 octobre 2004 à 13:56:12 | Probleme avec FILE

sidewalker


J'ai un petit probleme... La compilation s'opère sans probleme mais lors de l'exécution ça ne s'affiche pas correctement.
En fait, lorsque je tape le chemin d'accès, le programme se ferme. (????)

Merci à celui qui m'aidera


printf("Veuillez specifier le chemin d'acces à votre map Ragnarok:\n");
textbackground(BLACK);
printf("# Attention, ce fichier se doit être d'extension .gat\n");
scanf("%s", &path);

// Vérification des handles
FILE * fmap;

fmap= fopen(path, "r");
if(fmap == NULL) {
printf("Echec de chargement\n");
getchar();

}
else {

printf("Fichier ouvert!");
getchar();


}


Now that's sidewalker's era
dimanche 24 octobre 2004 à 14:20:47 | Re : Probleme avec FILE

DeAtHCrAsH

Normal si tu executes le programme compilé sous windws.
Ouvre une console MS-DOS et execute le dedans.

Shell
dimanche 24 octobre 2004 à 14:25:58 | Re : Probleme avec FILE

DeAtHCrAsH

Pour t'expliquer ce qu'il se passe :
Quand tu entres le nom du fichier, tu valides en tappant ENTRER, qui valide ton choix mais qui reste aussi dans la cache.
Ensuite le getchar, récupere bel et bien le ENTRER, mais le la valide a nouveau car ENTRER equivaut à un retour chariot couplé à un retour a la ligne.

Si tu veux tout de meme pouvoir utiliser ton programme en mode GUI, tu dois vider la cache après avoir récuperer la saisie utilisateur.

Exemple:

printf("Chemin : ");
scanf("%s", &path);
fflush(stdin);
getchar(); //Tu peux aussi mettre systeme pause mais a ce compte la tu peux virer le fflush(stdin).


Shell
dimanche 24 octobre 2004 à 15:22:21 | Re : Probleme avec FILE

vecchio56

Administrateur CodeS-SourceS
Moi ce serait plutot l'instruction scanf("%s", &path); qui m'inquiéterais... Surtout quand je vois ensuite fopen(path, "r");
path est sans doute un char*, donc c'est path qu'il faut donner à scanf et pas son adresse
dimanche 24 octobre 2004 à 15:43:51 | Re : Probleme avec FILE

DeAtHCrAsH

vecchio56> ca revient au meme.
Si path est déclarée "char *path;" ou "char path[MAX_PATH]";
que tu indiques &path ou path reviens au meme, car dans les deux cas tu donnes l'adresse du premier élément de path.

Shell
dimanche 24 octobre 2004 à 15:48:14 | Re : Probleme avec FILE

vecchio56

Administrateur CodeS-SourceS
Je pense qu'il y en a un de nous deux qui n'est pas bien réveillé...
dimanche 24 octobre 2004 à 15:49:58 | Re : Probleme avec FILE

plus_plus_fab

fflush(stdin);

J'en ai marre de voir ça, ça fait au moins la 10ème fois que je vois cette idiotie, écrite par plusieurs personnes différentes qui plus est !
fflush s'applique aux flux de sortie uniquement, pour un flux d'entré, c'est indéfini !!! (probablement désastreux)

dimanche 24 octobre 2004 à 15:52:43 | Re : Probleme avec FILE

vecchio56

Administrateur CodeS-SourceS
(path == &path) vrai si path est un tableau, faux si path est un pointeur
dimanche 24 octobre 2004 à 17:12:12 | Re : Probleme avec FILE

djl

plus_plus_fab > entierement d'accord, je le repete moi meme souvent

le probleme c'est que ms à eu la 'bonne' idée d'implémenter fflush( <input stream> ) et pas facile de faire comprendre que ce comportement n'est pas standard, donc pas portable et dangereux

on pourrait rajouter un fflush( stdout ) pour forcer l'affichage avant le scanf

et faire un fgets pour saisir une chaine et banir scanf et gets, toujours à cause du risque d'overflow
dimanche 24 octobre 2004 à 17:43:58 | Re : Probleme avec FILE

DeAtHCrAsH

FFLUSH()

Fonction :
Vide la mémoire tampon associée à un flux.

Syntaxe : i
nt fflush(FILE *stream);

Ptototype dans :
stdio.h

Description :
Lorsque stream est un flux ouvert pour des sorties, fflush() entraine l'ecriture du contenu de la mémoire tampon associée au flux.

Lorque stream est un flux ouvert pour des entrées, la mémoire tampon est vidée.

Le flux stream reste ouvert après l'execution de fflush. cette fonction n'a pas d'effet sur les flux n'utilisant pas de mémoire tampon.

Valaur retournée :
Retourne 0 si l'opération réussit et EOF lorsqu'une erreur est detectée.

Portabilité :
Disponible sur les systèmes Unix : compatible avec la norme ANSI du langage C.


Shell

1 2

Cette discussion est classée dans : file, probleme, printf, chemin, fmap


Répondre à ce message

Sujets en rapport avec ce message

pb avec un labyrinthe [ par skinia ] je suis sur un projet de labyrinthe et j'ai bloqué pour l' algorithme du plus court chemin (entre un pt qq du labyrinthe et la cible au milieu).le lab Petit probleme de code en C sur Linux !! [ par UncleShu ] Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM Hachage fermé problème de lecture [ par mcflysupersonic ] Bonjour je suis nouveau sur le forum est ceci est ma première question donc j'espère que je ne me suis pas trompé d'endroit pour poster.Voilà j'ai un Probleme d'ecriture et copie fichier texte [ par metek ] SalutMon but est d'etudier un fichier txt de rechercher un mot,le localiser et enfin de copier le rest de la ligne(donc les mots qui le suivent sur la Probleme d'acces au disque dur (avec code source) [ par akk ] Salut a tous , j'ai un petit probleme avec le code suivant car il ne m'affiche pas les résultats escomptés.#include #include probleme de listage de fichiers [ par Kevin972 ] salut!! je ne comprends pas la fonction ne liste rien du tout.........al'aide!!!!!!!!!!!!!!!!! voici ma fonction:#include#include#include#include#in probleme de formatage [ par psycho ] bonjour!voila, je suis en train de programmer un logiciel en C (pas C++), et j utilise des entiers de type long.j utilise printf de stdio.hprobleme j Enregistrer en HEXA un texte avec gcc !! [ par UncleShu ] /* * Ce programme affiche le fichier en HEXADECIMAL et se copie lui-même avec * une autre exetenstion (.txt). Moi je voudrais qui affiche le fichier * interruption avec dev-cpp dans instruction asm() [ par mrtoufou ] J'ai un probleme avec dev-cpp. J'ai besoin de trouver la resolution avant d'acceder a la memoire video et je comptais pour cela utiliser la fonction v probleme avec les couleurs [ par sparetime ] bonsoirsous dos en graphique je peux utiliser outtext et printf pour afficher du texte mais quant à changer la couleur je peux le faire avec outext av


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,342 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales