probleme avec un nom de fichier
Salut, jai un souci avec mon programme. Jai une fonction qui me renvoie le mois et l'annee en cours et je mets ces variable en tant que nom de fichier :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| char *nomdufichier()
{
char *nomfichier=NULL;
int m;
int a;
m=chopeMois();
a=chopeAnnee();
//printf("Mois est %d",m);
//printf("Annee est %d",a);
a=a-100;//on veut que le dernier chiffre donc on retire 100;
a=a+48;//on ajoute 48 pour 'convertir' (sinon affiche smiley)
if(m<10)
{
nomfichier[0]='0';
}
else
{
nomfichier[0]='1';
}
m=m-10;//on prend que le dernier chiffre donc on soustrait de 10
m=m+48;//on ajoute 48 pour 'convertir' (sinon affiche smiley)
nomfichier[1]=m;
nomfichier[2]='-';
nomfichier[3]='2';
nomfichier[4]='0';
nomfichier[5]='0';
nomfichier[6]=a;
nomfichier[7]='.';
nomfichier[8]='t';
nomfichier[9]='x';
nomfichier[10]='t';
nomfichier[11]='\0';//pour dire qu'on est bien à la fin
//printf("Le nom du fichier est %s",nomfichier);
return nomfichier;
} |
cette fonction marche bien a la fin jai bien un nom de fichier du style 12-2006.txt
Mais dans une autre fonction, quand je veux recuperer ce nom pour créer mon fichier ça mer**. Impossible de resoudre, je lance l'application et quand jarrive a la fonction ça plante et je fois fermer.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
void ajouteeleve()
{
char n[LG]="";
system("cls");
n[LG]=nomdufichier();
//strcpy(n,nomdufichier());
printf("AJOUT D'UNE FICHE ELEVE\n\n");
printf("Le nom du fichier est %s",n); |
jai beau testé ça marche pas. Comment faire svp ?
Merci d'avance de votre aide
Re: probleme avec un nom de fichier
Citation:
Envoyé par Ludo75
Salut, jai un souci avec mon programme.
Code:
1 2 3 4
|
char *nomfichier = NULL;
<...>
nomfichier[0] = '0'; |
Ben oui. 'nomfichier' est un pointeur vers une adresse invalide. Ecrire à cette adresse invoque un comportement indéfini.
Il faut un tableau de char (probablement dynamique, càd alloué avec malloc())
Code:
1 2 3 4 5 6 7
|
char *nomfichier = malloc (taille_adequate);
if (nomfichier != NULL)
{
...
} |
Ne pas oublier de libérer le bloc quand on en a plus besoin.
Sinon, c'est un peu atroce comme codage. Tu devrais te renseigner sur sprintf()...