C / fonction fopen

Loxi -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir a tous !!

Voila j'ai un problème bien ennuyeux avec la fonction fopen

elle s'utilise normalement ainsi : fichier = fopen("test.c", "a");

mais je désirerait que test.c et a (dans mon exemple) soit des variables de types char que je peux definir avant, soit :

char nomfichier[128];
char mode ouverture[4];
fgets(nomfichier, sizeof nomfichier, stdin);
fgets(modeouverture, sizeof modeouverture, stdin);
fichier = fopen(nomfichier, modeouverture);

Seulement, il n arrive pas a ouvrir le fichier que je demande, a chaque coup et peut importe les paramètres :(

Que manque t'il ? est-ce une histoire de pointeurs?

Merci de votre aide !!
A voir également:

1 réponse

chuka Messages postés 980 Statut Membre 378
 
salut,
en faisant cela ça fonctionne....c'est la fonction fgets qui fout un peu le bordel....
int main()
{FILE*fp;
char nomfichier[128];
char mode[4];
printf("nom\n\r");
gets(nomfichier);
printf("mode\n\r");
gets(mode);
fp=fopen(nomfichier,mode);
...
....
fclose(fp);
return 1;
}
J'espere ça pourra t'aider...
1
Loxi
 
Voila mon code qui foire encore : le message d'erreur est sur l ouverture du fichier et il me renseigne comme nom de fichier le mode que j ai choisi...bizarre



int dev()
{
FILE* fichier = NULL;

char dir[128];
char mode[4];
char texte[10000] = {0};

printf("nom\n\r");
gets(dir);
printf("mode\n\r");
gets(mode);

fichier = fopen(dir, mode);
if (fichier != NULL)
{
fgets(texte, sizeof texte, stdin);
fprintf(fichier, "%s", texte);

fclose(fichier);
}

else
{
printf("\nImpossible d'ouvrir le fichier %s", dir);
}
}
0
Loxi > Loxi
 
mea culpa ca fonctionne bien, je ne sais pas trop ce qui a changé mais ca fonctionne !

Merci grandement a toi :)

code :

int dev()
{
FILE* fichier = NULL;

char dir[128];
char mode[4];
char texte[10000] = {0};

printf("nom\n\r");
gets(dir);
printf("mode\n\r");
gets(mode);

fichier = fopen(dir, mode);
if (fichier != NULL)
{
fgets(texte, sizeof texte, stdin);
fprintf(fichier, "%s", texte);

fclose(fichier);
}

else
{
printf("\nImpossible d'ouvrir le fichier %s", dir);
}
}
0
darkfido533
 
salut,

je crois, sauf erreur de ma part, qu'on peut remplacer :

printf("nom\n\r");
gets(nomfichier);

par :

sprintf(nomfichier, "%s", nom);

tout dépend des besoins du code bien sûr ;)
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Vous déterrez un post qui date de plus d'un an...
De plus, vous faites erreur.
Je vois pas comment on peut remplacer une fonction d'affichage à l'écran (printf) et une fonction d'entrée (gets) par une simple fonction d'affichage dans une variable (sprintf).
Cdlt,
0
darkfido533
 
je déterre ce post parce que je cherchais justement à ouvrir des fichiers dans le nom serait contenu dans un tableau de char.

Pour sprintf cette fonction inscrit la chaine de caractères en paramètre dans le tableau de chars. (je peux me tromper je suis encore un débutant).

Mais pour ce post, il me semble pas qu'on avait spécifiquement besoin d'un affichage.

De mon côté, ma fonction ne marche pas très bien alors je suis pas sûr que c'est très optimisé.
0