> Tous les forumsAutres langages

 direction du fichier dans un fopen AIDE :)
Statut du sujet : NON RESOLU Imprimer
 juliendeparis
  Posté le 08/06/2006 @ 14:02  
 Petit astucien

6 Messages
bonjour, voila j'aimerai savoir si il est possible d'inserer une variable dans la direction d'un fopen. exemple : void ajoutobservation(int numeroID){ observ observation; FILE *fichier; clrscr(); fichier=fopen("c:\\observation\\(insertion de la variable numeroID).txt","a"); ....} ce qui donnerai donc pour "numeroID=1" le chemin suivant : "c:\\observation\\1.txt" merci de votre aide.
 Afficher le profil de juliendeparisEnvoyer un message privé à juliendeparis
 
 
Publicité
 koala01  Posté le 08/06/2006 à 19:29  
Astucien

4715 Messages
Salut, C'est tout à fait possible, du simple fait que fopen prend un pointeur de type caractère en premier argument… Il "suffit" donc de créer un tableau de caractères (AKA une chaine de caracteres, en C) en fonction d'argument passés, et avec l'aide, entre autre, de strcat… La seule chose à laquelle il faudra bien veiller, c'est à ce que le tableau destiné à recevoir la chaine finale soit suffisemment long pour accueillir l'ensemble des caractères de cette chaine [clindoeil] un petit exemple [code] int Lecture(char *filename) { //un tablau temporaire char buffer[512]="c:\\le_chemin\\qui_ne_bouge_pas\\"; //ajout du nom de fichier strcat(buffer,chaine); //n'oublions pas l'extension (il serait *idéalement* pas mal de penser à vérifier si c'est nécessaire) strcat(buffer,".txt"); //"yapluka" ouvrir le fichier fichier=fopen(buffer,"a"); //et a travailler dessus [clindoeil] }[/code] Selon moi, il parrait intéressant de renvoyer une valeur qui permettra de déterminer si cela a réussi ou non (1=ok,0=nok, par exemple [clindoeil])… Comme les booléens n'existent pas en C… faisons avec [clindoeil]

Modifié par koala01 le 08/06/2006 19:30
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 koala01  Posté le 08/06/2006 à 19:36  
Astucien

4715 Messages
Juste un truc encore: Dans le cas où le parametre passé ne serait pas de type "chaine de caractères", il faudra veiller à le transformer pour qu'il le devienne… il *me semble" (personnellement, à moi tout seul) que cette transformation devrait, pour la facilité, etre effectuée AVANT l'appel de la fonction, ce qui permet d'utiliser la fonction avec des valeurs "préétablie"(une chaine de caractère en parametre), alors que, si à un moment, tu as besoin de la fonction avec un entier, que tu la crée pour un entier, et qu'apres tu as besoin de la meme fonction pour un réel, tu te retrouveras avec deux fonctions qui font exactement la meme chose, mais avec un nom différent (du fait que la surcharge des arguments n'est pas autorisée en C)[langue]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 AlexPrince  Posté le 08/06/2006 à 21:22  
Petit astucien

398 Messages
[code]char buffer[MAX_PATH + 1] = {0}; snprintf(buffer, MAX_PATH, "c:\whatever\whoever\\%s.txt", "bleh");[/code] Buffer devrait donc contenir ici "c:\whatever\whoever\bleh.txt" et le '\\0' de fin de chaîne habituel.
Afficher le profil de AlexPrinceEnvoyer un message privé à AlexPrince
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2009 WebastucesAller en haut de la page