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

  FORUM HardWare.fr
  Programmation
  C

  Nom de fichier variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nom de fichier variable

n°1244160
macafifi
Posté le 12-11-2005 à 10:23:59  profilanswer
 

Bonjour,
Etant débutant, je suis à la recherche de la bonne écriture sous C pour la création d'un nom de fichier variable
avec la date, du genre nomfic="c:\\ficddmmaa.txt" où :
- dd = jour
- mm = mois
- aa = année (il fallait s'en douter !)
 
La date est déja dispo par la fonction getdate(&dat) et la structure date dat.
 
Voici ce que j'ai fait pour l'instant :
 
1. #include<conio.h>
2. #include<dos.h>
3. #include<stdio.h>
4. #include<time.h>
5. #include<string.h>
6.
7. FILE *fichier;
8. char nomfic,jour,mois,annee;
9. struct date dat;
10.
11.
12. main()
13. {
14. clrscr();
15. getdate(&dat);16.  
16. printf("%02d/%02d/%04d",dat.da_day,dat.da_mon,dat.da_year);
17. nomfic="c:\\fic";
18. jour=dat.da_day;
19. strcat(nomfic,jour);
20. mois=dat.da_mon;
21. strcat(nomfic,mois);
22. annee=dat.da_year;
23. strcat(nomfic,annee);
24. strcat(nomfic,".txt" );
25.
26. fichier=fopen(nomfic,"a+t" );
27.  
28. /* traitement */
29.
30. fclose(fichier);
31. }
 
 
Avez-vous un moyen (très certainement) plus simple pour cette routine ?
Merci pour vos réponses
 
JB

mood
Publicité
Posté le 12-11-2005 à 10:23:59  profilanswer
 

n°1244173
olivthill
Posté le 12-11-2005 à 11:17:50  profilanswer
 

Un moyen plus simple consiste à utiliser sprintf() ce qui donnerait :
 

Code :
  1. #include<conio.h>
  2. #include<dos.h>
  3. #include<stdio.h>
  4. #include<time.h>
  5. #include<string.h>
  6. int main()
  7. {
  8.    FILE *fp;
  9.    char nom_fic[FILENAME_MAX];
  10.    struct date dat;
  11.    clrscr();
  12.    getdate(&dat); 
  13.    sprintf(nom_fic, "c:\\fic%02d%02d%04d", dat.da_day, dat.da_mon, dat.da_year);
  14.    if ((fp = fopen(nom_fic,"a+t" )) == NULL) {
  15.       fprintf(stderr, "Echec à l'ouverture de %s.", nom_fic);
  16.       return(-1);
  17.    }
  18.    /* Traitement */
  19.    fclose(fp);
  20.    return(0);
  21. }

Edit : Par ailleurs, il souvent plus pratique d'utiliser la date au format aaaammjj plutôt que jjmmaaaa, car avec le format inversé, les fichiers sont facilement triés.
 
Edit bis: Merci Elmoricq, pour avoir vu ma faute d'étourderie, et je viens de la corriger dans le code.

Message cité 1 fois
Message édité par olivthill le 12-11-2005 à 18:25:06
n°1244175
Emmanuel D​elahaye
C is a sharp tool
Posté le 12-11-2005 à 11:19:26  profilanswer
 

macafifi a écrit :

Bonjour,
Etant débutant, je suis à la recherche de la bonne écriture sous C pour la création d'un nom de fichier variable
avec la date, du genre nomfic="c:\\ficddmmaa.txt" où :


C'est faisable en standard : time(), localtime() et strftime() (<time.h> ) sont tes amis.
 
Je te laisse remuer ton neurone. Poste ton code si tu es planté.
 


---------------
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°1244220
macafifi
Posté le 12-11-2005 à 12:50:35  profilanswer
 

Merci pour vos suggestions
C'est vraiment sympa de votre part !
 
JB

n°1244245
Elmoricq
Modérateur
Posté le 12-11-2005 à 13:51:27  profilanswer
 

olivthill a écrit :

Un moyen plus simple consiste à utiliser sprintf() ce qui donnerait :


 
nomfic doit être de type char[] ou char* (ici je le mettrais en char nomfic[FILENAME_MAX])


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

  Nom de fichier variable

 

Sujets relatifs
Connaître le type d'un fichierutilisation d'une variable ??
Function et variableUtilisation variable XSL
fichier texte (ASCII)compteur sur plusieurs fichier et plusieurs onglets
nom de fichier dans cellute protégéeouvrir un fichier excel depuis Access en VBA, encore une petite chose
[batch] récupérer le nom d'un fichier et le mettre dans une variable[PHP]Nom du fichier php dans une variable ?
Plus de sujets relatifs à : Nom de fichier variable


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