Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1435 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Aidez un noob!! ?clik:clik pa

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aidez un noob!! ?clik:clik pa

n°915116
SuperGreu
Posté le 05-12-2004 à 14:13:43  profilanswer
 

voila, je voudrais créer un programme qui entre autre ouvre un fichier dont le chemin d'accès contient des variables. Pour ca, j'ai fais un fprintf dans un fichier, que je supprime apres avoir fait un fscanf.
TAB contient donc le chemin d'accès complet, mais fopen(*p=TAB,"r" ) ne fonctionne pas correctement.
 
La, ca marche :

Code :
  1. void main (void)
  2. {FILE*fic;
  3. char*p="c:\\Documents and Settings\\Cédric\\Ma musique\\Rammstein.wma";
  4. fic=fopen(p,"r" );
  5. if(!fopen){}
  6. else puts(p);
  7. close(fic);
  8. system("PAUSE" );
  9. }


et ca affiche c:\\Documents and Settings\\Cùdric\\Ma musique\\Rammstein.wma
 
jusque la pas de problème,mais quand je fais avec un fscanf du fichier txt contenant le chemin d'accès p=c:\\Documents and Settings\\Cédric\\Ma musique\\Rammstein.wma et puis ca ouvre rien du tout.
Si vous avez lu jusque la, deja merci, et puis si vous pouvez me dire quoi faire encore plus merci!
A+

mood
Publicité
Posté le 05-12-2004 à 14:13:43  profilanswer
 

n°915123
Emmanuel D​elahaye
C is a sharp tool
Posté le 05-12-2004 à 14:36:05  profilanswer
 

SuperGreu a écrit :

voila, je voudrais créer un programme qui entre autre ouvre un fichier dont le chemin d'accès contient des variables.


Tu veux dire une chaine élaborée à partir de variables, comme  
 
"NOM_<num>.txt" avec num ::= "000"-"999"
 
par exemple ?
 
Il faut définir un tableau de char de taille adaptée. (malloc() peut aider à faire du code 'autodémerdant').
 
Ensuite, il faut utiliser sprintf() (ou snprintf() en C99) pour écrire la chaine avec les conversions qui vont bien.

Code :
  1. char s[32];
  2.    int n = 123;
  3.    sprintf (s, "nom_%03d.txt", n); /* -> "nom_123" */
  4.    fopen (s, ...);


   


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°915139
Taz
bisounours-codeur
Posté le 05-12-2004 à 15:55:08  profilanswer
 

# if(!fopen){}
 
tu fais quoi là?

n°915225
SuperGreu
Posté le 05-12-2004 à 18:49:26  profilanswer
 

rien du tout en fait je veu juste vérifier si le fichier existe...:S

n°915229
hoov
Posté le 05-12-2004 à 18:52:45  profilanswer
 

fopen est une fonction ...
 
en revanche tu peux tester la valeur de retour de la fonction fopen
 
man fopen

n°915251
SuperGreu
Posté le 05-12-2004 à 19:19:13  profilanswer
 

je crois que le pb viens surtout du fait que dans mon premier exemple le programme ouvre c:\\...\\cùdric alor que quand je passe cette adresse via une chaine il ouvre c:\\...\\cédric  ...qu'est-ce que vous en pensez et qu'est-ce que je peux faire pour que les 2programmes ouvrent le meme fichier (cf premier topic)

n°915257
hoov
Posté le 05-12-2004 à 19:29:20  profilanswer
 

j'ai pas compris mais vires tes accents

n°915266
SuperGreu
Posté le 05-12-2004 à 19:45:27  profilanswer
 

en gros :quand p = c:\\...\\cùdric sur la  console ca marche
et quand p=c\\...\\cédric ca marche pa...
(jentends par ù lespece de U avec un accent aigu)


Message édité par SuperGreu le 05-12-2004 à 20:22:57
n°915336
c0wb0y
:d
Posté le 05-12-2004 à 22:21:47  profilanswer
 

Les accents ne sont pas géré en C je crois.

n°915345
Taz
bisounours-codeur
Posté le 05-12-2004 à 22:31:52  profilanswer
 

bien sur que si. Le C ne sait même pas ce que c'est de toutes façons. Ça marche très bien

mood
Publicité
Posté le 05-12-2004 à 22:31:52  profilanswer
 

n°915364
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-12-2004 à 23:06:35  profilanswer
 

SuperGreu a écrit :


et ca affiche c:\\Documents and Settings\\Cùdric\\Ma musique\\Rammstein.wma


 
déjà c'est pas normal que ça affiche des double "\"
 

SuperGreu a écrit :


 fichier txt contenant le chemin d'accès p=c:\\Documents and Settings\\Cédric\\Ma musique\\Rammstein.wma  


 
dans le fichier il faut des simples "\"
ce n'est que dans le code C que le "\" a un rôle spécial, pas dans les données lues...
 
Et pour le mélange des accents, c'est simplement que la console Windows n'utilise pas le même jeu de caractères que Windows j'imagine...


Message édité par antp le 05-12-2004 à 23:07:15

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°916035
SuperGreu
Posté le 06-12-2004 à 17:26:35  profilanswer
 

ok jai reessayé et j'ai fais ce que vous m'avez dit mais malheureusement ca ne résoud pas le problème . cette fois ca maffiche avec un fgets et un puts(p):C:\Documents and Settings\Mes Documents\Ma musique\Rammstein.wma  
et ca marche toujours pas....je comprend vraiment pas !

n°916043
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-12-2004 à 17:28:42  profilanswer
 

C'est quoi le code actuel ? parce qu'avec le fopen bizarre...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°916083
SuperGreu
Posté le 06-12-2004 à 17:43:38  profilanswer
 

void main (void)
{char utilisateur[30],fic[100],*p;
FILE*test;
sprintf(fic,"C:\\Documents and Settings\\%s\\Mes Documents\\Ma musique\\Rammstein.wam",utilisateur);
p=fic;
test=fopen(p,"r" );
puts(p);
if(!test){} else
{fclose(test);
remove (p);}}[cpp]
je crois que c'est ca.PS: je n'ai pas copier la premiere partie du programme, mais on connait deja utilisateur.
sinon jen profite pour poser une question : pourquoi scanf suivi de puts ou printf naffiche pas les accents tandis qu'un fscanf suivi de puts ou printf le fait?
voila, merci d'avance!

n°916110
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-12-2004 à 17:57:36  profilanswer
 

et en quoi ça ne marche pas dans ton code actuel ?  
parce que tu ne fais rien avec le fichier à part l'ouvrir et le fermer...
(enfin, faudrait peut-être donner une valeur à "utilisateur" )


Message édité par antp le 06-12-2004 à 17:58:16

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°916118
SuperGreu
Posté le 06-12-2004 à 18:01:51  profilanswer
 

bah on connai deja la valeur d'utilisateur
dans le cas d'un utilisateur ="cédric",ca ne marche pas.
et puis remove c bien pour supprimer un fichier nan? :S

n°916248
c0wb0y
:d
Posté le 06-12-2004 à 19:47:38  profilanswer
 

Taz a écrit :

bien sur que si. Le C ne sait même pas ce que c'est de toutes façons. Ça marche très bien


 
j'en ai mare d'apprendre des mauvaises choses en cours http://hellien.free.fr/smileys/god.gif
 
m'enfin, les accents dans le code j'aime pas donc c'est rien :]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Aidez un noob!! ?clik:clik pa

 

Sujets relatifs
aidez une pauvre etudiante avec une requete bloquanteaidez moi dans un exercice d algo svp
Site en PHP : Aidez moi svpProbleme en programmation, langage C !!! Aidez moi svp!!!
Aidez Moi pour un site internet!!Problème de noob ecriture/lecture fichier texte
[FLASH] anim1(clik)->anim2(clik)->reto ur anim1 en boucle :(gros noob. peut on lire le code hexadecimal dans un fichier.
aidez un (jeune! :-) ) débutant! svpje viens d'instaler delphi6, ma premiere utilisation, aidez moi please
Plus de sujets relatifs à : Aidez un noob!! ?clik:clik pa


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR