Comment nommer un fichier? [Résolu]

Signaler
Messages postés
14
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
5 avril 2009
-
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
-
Bonsoir, je cherche à ouvrir un fichier avec fopen (jusque la vous me direz il y a un super tuto qui va t'aider^^), la difficultée c'est que ej veux que ce soit l'utilisatuer qui entre lui même le nom du fichier qui sera créé lors de l'execution du programme. Je vais mettre un exemple

je souhaiterais avoir un programme faisait la chose suivante:

Code : C

1
2
3
4
5, intd;scanf("%ld",&d);FILE*resultat=NULL;resultat=fopen("resultat numero : %ld","w+");

et donc l'utilisateur peut indiquer quel numero de resultat il est en train de calculer (ce que je veux c'est savoir comment faire pour que mon ordi comprenne qu'ils doit remplacer le %ld dans le fopen par la valeure contenue dans la variable d).

Si quelqu'un a une idée^^, merci d'avance.

2 réponses

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Pour faire plus simple, il existe sprintf() qui permet d'obtenir une mise en forme de ce genre. Soit dit en passant, test donc le retour de fopen, si ça échoue et que utilise un joli pointeur nul par la suite tu cours droit vers le segfault.

Exemple :

int d;

FILE *resultat;
char name[42];

scanf("%ld",&d);
sprintf(name, "resultat numero : %ld", d);if ((resultat fopen(name,"w+")) NULL)
perror("fopen");
/* etc */
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
faut convertir l'entier en chaîne de caractère; si c'est compris entre 0 et 9 tu peux le faire directement :


int num;
char szPath="resultat numero 0";
scanf("%d",&num);
szPath[16]=szPath[16]+num; //  on ajoute au caractère '0' (code ASCII 0x30=48 accessoirement)
FILE *file=fopen(szPath,"w+");
...