Nom de fichier variable

Nom de fichier variable - C - Programmation

Marsh Posté le 12-11-2005 à 10:23:59    

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

Reply

Marsh Posté le 12-11-2005 à 10:23:59   

Reply

Marsh Posté le 12-11-2005 à 11:17:50    

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
Reply

Marsh Posté le 12-11-2005 à 11:19:26    

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/
Reply

Marsh Posté le 12-11-2005 à 12:50:35    

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

Reply

Marsh Posté le 12-11-2005 à 13:51:27    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed