Open( choix d'un .txt) ?

Résolu/Fermé
flop - 12 févr. 2015 à 13:59
 flop - 14 févr. 2015 à 21:50
Bonjour,

est-il possible via la fonction
open( **********, O_RDONLY) ;
de remplacer les ********** par une chaine de caractère portant le nom du fichier.txt a ouvrir ?

me permettant ainsi de laissez le choix du dossier a ouvrir a l'utilisateur !

un exemple me serais d'une grande aide si cela s'avère possible !
merci de votre aide future !!

A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 févr. 2015 à 14:29
Bonjour,

Oui, c'est possible.
Exemple : open("toto.txt", O_RDONLY);

Note : pourquoi utiliser la fonction open() et non fopen() ? fopen() est une fonction standard contrairement à l'autre.

Cdlt,
0
Bonsoir fiddy !

Je me suis mal exprimé .
Imaginons que l'utilisateur a un choix a faire .
Si il tape 1 le fichier1.txt sera ouvert , si il tape 2 ce sera le fichier2.txt et ainsi de suite .

Moi je cherche a savoir si il est possible de remplacer toto.txt par le nom de sa chaine de caractère .
Je cherche a faire ceci en reprenant ton exemple .

Char truc[8] = "toto.txt" ;
....
Open(truc ,O_RDONLY);

A présent pour illustrer mon objectif rapidement

If ( utilisateur tape 1)
Truc[8] = "fichier1.txt'" ;
If ( utilisateur tape 2)
Truc[8] = "fichier2.txt"

Open(truc ,O_RDONLY)

Possible de faire sa ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
Modifié par fiddy le 12/02/2015 à 22:16
Oui possible.
char truc[8+1]; /*ne pas oublier de compte le caractère de fin*/
int d;
int ret;
printf("nb=");
ret=scanf("%d",&d);
if(ret==1 && d>0 && d<10) {
     int fd;
     sprintf(truc, sizeof truc, "toto%d.txt", d);
     fd=open(truc, O_RDONLY);
     /**/
     close(fd);
}

Je n'ai pas testé, il y a peut-être une erreur qui s'est glissée...
Et je répète : pourquoi ne pas utiliser fopen() au lieu de open() ???
0
merci fiddy !

je vais testé sa rapidement !
et je te tien informé du résultat !

j'utilise open() car j'ai toujours fait avec , donc c'est plus une question d'habitude que de contrainte, mais si tu pense que mon problème peut être résolut plus vite grâce a sa je suis a ton écoute !!
0
pourquoi faut-il close le file descriptor ? (fd)
0
et pour finir je rencontre un problème avec sprintf
(lui non plus j'ai pas l'habitude de l'utilisé )

>
warning: passing argument 2 of `sprintf' makes pointer from integer without a cast [enabled by default]
sprintf(level, sizeof level, "map_%d.txt", d);
<

level remplace truc dans ton exemple .
une dernière aide ? normalement après sa j'ai fini mon programme !

merci beaucoup ;-)
0