Aide avec fopen sur code::blocks 8.02

Bonjour, tout le monde
moi jutilise code blocks pour compiler mes programmes en c

j'ai besoin de rajoutter une variable
date
qui contient la date du jour au nom dun fichier.txt
qui devra etre
transaction_date.txt

jai utiliser differente methode
mais je narrive pas a creer le fichier
voici les methodes que jai utiliser

methode 1

char dateEtHeureDuJour();
char date[11], Heure[256];
int main(int argc, char *argv[])
{
dateEtHeureDuJour();

FILE* fichier = NULL;

char tmp[500];
sprintf(tmp, "transaction_%s.txt", date);
printf("\n%s", tmp);
fichier = fopen(tmp, "w");
fclose(fichier);
return 0;
}

methode 2

char dateEtHeureDuJour();
char date[11], Heure[256];
int main()

{
dateEtHeureDuJour();
char nom1[27]="transaction_";
char nom3[]=".txt";
char nom2[15]="";
char* nomF;
strcat(nom2, date);
strcat(nom2, nom3);
strcat(nom1, nom2);
printf("\n%s", nom1); /******L'affichage marche tres bien*******/
nomF = (char*)malloc(sizeof(char));
nomF=&nom1[0];
printf("\n%s", nomF); /******L'affichage marche tres bien*******/
FILE* fichier = NULL;
fichier = fopen(nomF, "w");
fclose(fichier);

return 0;
}

j'aimerais avoir une methode universelle qui fonctionne sur tout les compilateurs car ces deux methodes naboutisser a rien sur code::blocks

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. J'ai aussi ce probleme
    jai telecharger code::blocks 10.05
    mais j'ai tjr ce mem probleme
    1. jai fini par retrouver ou se trouvait mon erreur

      ma fonction
      dateheurdujour
      retounait la date avec
      des
      /
      or on ne peut metrre ce genre de caractere dans le nom dun fichier
      1. Contributeur
        Exact.
        Tu aurais pu t'en rendre compte avant en testant la valeur de retour de ta fonction fopen.
        Par exemple :
        fichier = fopen...
        if (fichier==NULL) {
        fputs("erreur de création du fichier\n",stderr);
        exit(EXIT_FAILURE);
        }
        De plus, attention à ta méthode 2. Ta variable nom2 n'est pas assez grande pour contenir les caractères. Et n'oublie pas le '\0' final.

        Cdlt,
      2. jai fait un printf pr tester
        mais javais oublie que je ne devias pas mettre
        /
        dans le nom
        je ne me suis rendu compte des heures apres