C / fonction fopen
Loxi
-
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
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 !!
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:
- C / fonction fopen
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
1 réponse
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...
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...
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);
}
}
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);
}
}
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 ;)
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,
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é.