Problème avec la fonction fopen - Programmation
Marsh Posté le 19-09-2001 à 18:46:25
#include <stdio.h>
int main(void)
{ char ch[80];
printf("*-*-*-*-* --Recherche d'un fichier-- *-*-*-*-*\n\n" );
printf("Ecrivez le nom du fichier a chercher : \n" );
scanf("%s", &ch);
printf("Recherche du fichier %s :\n",ch);
if (fopen("????????","r" ) == NULL) {printf("Ce fichier n'existe pas!\n" );}
else printf("Ce fichier existe!\n" );
return 0;
}
-----------------------------------------------------------------
Voilà le code source du prog (pas définitif j'en ai bien peur...).
Marsh Posté le 19-09-2001 à 18:52:19
heu,
voici un exemple d'utilisation d'une fonction fopne
#include <stdio.h>
int main(void)
{
FILE *in, *out;
if ((in = fopen("\\AUTOEXEC.BAT", "rt" ))
== NULL)
{
fprintf(stderr, "Cannot open input file.\n" );
return 1;
}
if ((out = fopen("\\AUTOEXEC.BAK", "wt" ))
== NULL)
{
fprintf(stderr, "Cannot open output file.\n" );
return 1;
}
while (!feof(in))
fputc(fgetc(in), out);
fclose(in);
fclose(out);
return 0;
}
Marsh Posté le 19-09-2001 à 19:18:50
y a la fonction "access" definie ds stdio.h pr verifier l'existence d'un fichier
Marsh Posté le 19-09-2001 à 19:39:06
Ah ouais, si c pas le même problème qu'avec fopen ça peut être bon. Comment elle marche cette fonction?
Marsh Posté le 19-09-2001 à 21:04:28
Non... à mon avis quand je met juste ch ça cherche le fichier s'appellant "ch" et pas "la valeur de ch".
Marsh Posté le 19-09-2001 à 21:13:20
fab51 a écrit a écrit : Non... à mon avis quand je met juste ch ça cherche le fichier s'appellant "ch" et pas "la valeur de ch". |
Je vais faire un tour dans le source de mon prog, et je te dis koman G fais.
Marsh Posté le 19-09-2001 à 21:15:56
humm,
bon en premier tu fais un prog avec fopen et pas de fclose. commence deja par ça, parceque ca fait pas honneur au forum
ensuite en C que tu donnes juste le nom d'une chaine en param ça correpond en fait a son adresse c'est pas comme avec les int, long ou char (pour un carac seul)
alors essaie on va quand même pas l'essayer pour toi
Marsh Posté le 19-09-2001 à 21:20:42
Bon première chose, c'est pas la peine de faire ton malin, tu vois bien que je débute. Et deuxièmement j'ai bien essayé de mettre ch et ça marche pas!!!
Marsh Posté le 19-09-2001 à 21:24:48
char chemin[256];
scanf("%s", &chemin);
fopen(chemin,"rt" );
Chez moua, sa marche.
Marsh Posté le 19-09-2001 à 21:27:21
Ah oui c bon c cool ça marche! J'avais toujours laissé les "" c t pour ça. Sorry Dav Vador!
Marsh Posté le 19-09-2001 à 21:30:04
he,
faut pas avoir honte de débuter, mais en info faut tester, c'est pas 100 fois sur le métier, ... mais 1000 fois.
Marsh Posté le 19-09-2001 à 21:44:18
Oui, je suis tout à fait d'accord avec toi!
Euh... encore une ch'tite chose, comment on fait pour dire au prog de scanner tel ou tel répertoire du disque (ou même le disque entier d'un seul coup si ça existe!!!!)?
Marsh Posté le 19-09-2001 à 21:48:04
oulala,
ça fait un b
out de temps que je n'ai pas fais ça et encore c'était sous dos . A moins qu'il existe une fonction toute prete, tu ne peux scanner que répertoire par répertoire.
Le truc c'est de faire une fonction recursive, mais bon s'il y avait quelqu'un qui ait travaillé récement la-dessus ça serait mieux que moi.
Marsh Posté le 19-09-2001 à 21:50:22
Avec Turbo pascal, y'avait findfirst et findnext pour scanner 1 rep. Avec Borland C++, je pense que ces routines existent aussi, mais je ne suis pas sur...
Marsh Posté le 19-09-2001 à 22:25:05
Et comment on fait pour faire scanner au programme un répertoire précis?
Marsh Posté le 20-09-2001 à 01:19:52
la methode la plus portable est d'utiliser stat() [unix (mac??)] ou _stat() [windows]
Citation : #include <sys/types.h> |
A+,
Marsh Posté le 20-09-2001 à 01:30:11
et si tu code pour windows, c'est FindFirstFile et FindNextFile de l'api win32 ou sinon la classe CFileFind des MFC. Pour un exemple de parcours recurssif de l'arborescence regarde ici http://forum.hardware.fr/forum2.ph [...] &owntopic=
Marsh Posté le 20-09-2001 à 08:35:20
pas les FindFirstFile et FindNextFile, l'exemple c'est du ++ mais les deux autres fonctions viennent de l'api win32 et tu peux les utiliser en c directos.
Marsh Posté le 19-09-2001 à 18:30:01
Voilà la fonction fopen : fopen("NOMDUFICHIER","R" ). Bon j'ai mis "r" mais ça aurais pu être autre chose. Enfin dans mon cas c'est bien "r"...
Le but de mon programme (en C) est d'ouvrir un fichier dans le but de savoir s'il existe.
Donc je rentre le nom du fichier avec la commande scanf (type chaine de caractère) et mon problème est donc de faire figurer ce nom de fichier comme une chaine de caractères à la place de NOMDUFICHIER dans la commande fopen.
or il est impossible de faire :" fopen ("%s","r",filename) " puisque là il y aurais trop de paramètre dans la fonction fopen...
Please aidez moi!!!!