Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1547 connectés 

  FORUM HardWare.fr
  Programmation

  Problème avec la fonction fopen

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec la fonction fopen

n°60434
Fab51
Posté le 19-09-2001 à 18:30:01  profilanswer
 

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!!!!

mood
Publicité
Posté le 19-09-2001 à 18:30:01  profilanswer
 

n°60439
Fab51
Posté le 19-09-2001 à 18:46:25  profilanswer
 

#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...).

n°60442
barbarella
Posté le 19-09-2001 à 18:52:19  profilanswer
 

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;
}

n°60448
__Lolo__
C&#039;est pouleversant !
Posté le 19-09-2001 à 19:18:50  profilanswer
 

y a la fonction "access" definie ds stdio.h pr verifier l'existence d'un fichier

n°60456
Fab51
Posté le 19-09-2001 à 19:39:06  profilanswer
 

Ah ouais, si c pas le même problème qu'avec fopen ça peut être bon. Comment elle marche cette fonction?

n°60473
Dav Vador
Posté le 19-09-2001 à 20:45:45  profilanswer
 

Si tu mets ch à la place des ???, ça ne marche pas?

n°60477
Fab51
Posté le 19-09-2001 à 21:04:28  profilanswer
 

Non... à mon avis quand je met juste ch ça cherche le fichier s'appellant "ch" et pas "la valeur de ch".

n°60481
Dav Vador
Posté le 19-09-2001 à 21:13:20  profilanswer
 

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.

n°60483
barbarella
Posté le 19-09-2001 à 21:15:56  profilanswer
 

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 :D
 
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 :D

n°60485
Fab51
Posté le 19-09-2001 à 21:20:42  profilanswer
 

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!!!

mood
Publicité
Posté le 19-09-2001 à 21:20:42  profilanswer
 

n°60488
Dav Vador
Posté le 19-09-2001 à 21:24:48  profilanswer
 

char chemin[256];
scanf("%s", &chemin);
fopen(chemin,"rt" );
 
Chez moua, sa marche.

n°60489
Fab51
Posté le 19-09-2001 à 21:27:21  profilanswer
 

Ah oui c bon c cool ça marche! J'avais toujours laissé les "" c t pour ça. Sorry Dav Vador!

n°60490
barbarella
Posté le 19-09-2001 à 21:30:04  profilanswer
 

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.

n°60492
Fab51
Posté le 19-09-2001 à 21:44:18  profilanswer
 

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!!!!)?

n°60497
barbarella
Posté le 19-09-2001 à 21:48:04  profilanswer
 

oulala,
ça fait un b
out de temps que je n'ai pas fais ça et encore c'était sous dos :D. 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.

n°60500
Dav Vador
Posté le 19-09-2001 à 21:50:22  profilanswer
 

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...

n°60517
Fab51
Posté le 19-09-2001 à 22:25:05  profilanswer
 

Et comment on fait pour faire scanner au programme un répertoire précis?

n°60540
gilou
Modérateur
Modzilla
Posté le 20-09-2001 à 01:19:52  profilanswer
 

la methode la plus portable est d'utiliser stat() [unix (mac??)] ou _stat() [windows]
 

Citation :

#include <sys/types.h>
#include <sys/stat.h>
 
void main( void )
{
   struct stat buf;  // windows: struct _stat buf;
   int result;
 
   /* Get data associated with "stat.c": */
   result = stat( "le_full_path_du_fichier", &buf );
   // windows: result = _stat( "le_full_path_du_fichier", &buf );
 
   /* Check if statistics are valid: */
   if( result != 0 )
   // le fichier n'existe pas...
}


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°60541
aqwsezsxdr
Posté le 20-09-2001 à 01:30:11  profilanswer
 

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=

n°60544
Fab51
Posté le 20-09-2001 à 07:01:16  profilanswer
 

Ouais mais tout ça c'est du C++ on dirais...

n°60550
aqwsezsxdr
Posté le 20-09-2001 à 08:35:20  profilanswer
 

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.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Problème avec la fonction fopen

 

Sujets relatifs
[php] fonction graphics[VB] Probleme de passage de variables !!!
script de redircetion en fonction navigateur siouplait.... Mr dame...[ASP] problème de configuration IIS5
probleme de jsFopen (Merci pour votre aide...)
[Python] Probleme pour installer les modules!!!Probleme avec PHPNuke et Multimania ...
PRobleme de LDAP avec servlet JAVA / Apache / Tomcat[javascript] transformer une pitite fonction
Plus de sujets relatifs à : Problème avec la fonction fopen


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR