| | 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.
| | |
| |
| 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 | | | | | 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] | | | | | 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. | | | |
| | 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
|
|