Bonjour, je voudrai savoir comment utiliser une chaîne renvoyée par fgets pour créer un nom de fichier. Le nom du fichier effectivement créé est terminé par un '?', qui doit correspondre au '\0', le caractère de fin de chaîne. Pouvez vous me dire s'il existe un moyen connu de remédier à cela ? Merci beaucoup d'avance. Voilà mon programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <stdlib.h>
 
char * acqu(const char * mot)
   {
/* 
Allocation memoire pour
la chaine acquise.
*/
   char * chaine = malloc(80*sizeof(char));
   if (chaine==NULL)
      printf("erreur malloc acqu\n");
   printf("Entrez %s\n", mot);
/*
acqisition de la chaine avec
test sur la sortie de fgets
*/   
if (fgets(chaine, 80, stdin)==NULL)
      printf("erreur fgets acqu");
   return chaine;
   }
 
int main(void)
   {
/*
Allocation de memoire pour 
les differentes chaines utilisees
*/
   const char * namefile = malloc(80*sizeof(char));
   const char * mail = malloc(80*sizeof(char));
   const char * pseudo = malloc(80*sizeof(char));
   const char * site = malloc(80*sizeof(char));
   const char * MdP = malloc(80*sizeof(char));
/*
initialisation des chaines constantes
par la fonction char * acqu(const char *)
*/
   namefile = acqu("le nom de fichier");
   mail = acqu("l'adresse mail fournie");
   pseudo = acqu("le pseudo choisi");
   site = acqu("l'adresse du site");
   MdP = acqu("MdP");
/*
ouverture du fichier en ecriture
*/
   FILE * ptr_file;
   ptr_file = fopen(namefile,"w");
/*
ecriture dans le fichier de nom 
contenu dans la chaine pointe par
namefile de type const char *
*/   
 
   fprintf(ptr_file,"nom de fichier : %s\n",namefile);
   fprintf(ptr_file,"adresse fournie : %s\n",mail);
   fprintf(ptr_file,"pseudo : %s\n",pseudo);
   fprintf(ptr_file,"adresse internet : \n",site);
   fprintf(ptr_file,"MdP : %s\n",MdP);
/*
fermeture du fichier
et fin du programme
*/
   fclose(ptr_file);
   return 0;
   }
Je voudrai également savoir si l'utilisation de scanf("%s",char *) ne remplace pas avantageusement la fonction acqu. Merci beaucoup.
__________________________________________________________________
un bug dans l'édition de code par le forum :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
geneMdPalea.c: In function ‘main’:
geneMdPalea.c:81: warning: passing argument 1 of ‘fprintf’ from incompatible pointer type
geneMdPalea.c:82: warning: passing argument 1 of ‘fprintf’ from incompatible pointer type
geneMdPalea.c:83: warning: passing argument 1 of ‘fprintf’ from incompatible pointer type
geneMdPalea.c:84: warning: passing argument 1 of 'fprintf' from incompatible pointer type
geneMdPalea.c:85: warning: passing argument 1 of 'fprintf' from incompatible pointer type
  • ‘-->le caractère incriminé
  • '-->celui là fonctionne