Comment nommer un fichier?

Résolu
fandestargate Messages postés 14 Date d'inscription dimanche 5 avril 2009 Statut Membre Dernière intervention 5 avril 2009 - 20 mars 2009 à 19:36
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 20 mars 2009 à 21:17
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

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
20 mars 2009 à 21:17
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 */
3
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
20 mars 2009 à 20:04
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+");
...
0
Rejoignez-nous