IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Fonction de lecture de fichier


Sujet :

C

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Août 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 81
    Points : 71
    Points
    71
    Par défaut Fonction de lecture de fichier
    Bonjour,
    Le titre n'est pas tres explicite mais voici mon problème.
    J'ai crée un petit executable en C qui lit un fichier xml et le modifie
    Pour cela dans mon code pour trouver le fichier a traiter par mon parser de xml je fais : const char * filename = "D:/blabla.xml"
    Le probleme c'est que je voudrais rendre générique mon code en ne mettant pas un nom de fichier mais en lui disant de prendre le fichier xml qui se trouve dans le repertoire de l'executable.
    Comment puis-je faire
    Merci d'avance de vos aides

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Il te faut alors parcourir le repertoire à la recherche des fichiers xml voir dirent/opendir/readdir + les API WINDOWS

    Ou alors avoir un petit fichier ini pour spécifier le nom de fichier à ouvrir ?
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  3. #3
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Salut,
    Dans les fonctions de gestions de fichier de la libc, quand tu specifies un chemin relatif, c'est en relatif à l'endroit depuis lequel est executé le programme.
    Soit le programme d:\bla\blu\bli.exe et le fichier d:\bla\blu\blo.txt, si tu lances bli.exe depuis d:\bla\blu\ alors tu peux faire fopen("blo.txt", "r")
    Tu peux tester ceci avec une ligne de commande dos

    Les raccourcis windows permettent de definir "dans quel dossier lancer le programme", en general ils sont equivalents au dossier où se trouve l'executable.
    Qd tu double-cliques sur un executable depuis l'explorateur, il est executé depuis l'endroit où il se trouve.

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par parisjohn
    Le probleme c'est que je voudrais rendre générique mon code en ne mettant pas un nom de fichier mais en lui disant de prendre le fichier xml qui se trouve dans le repertoire de l'executable.
    Il serait plus propre et plus simple de specifier le nom du fichier comme argument de ton programme (cf. argc, argv). De cette maniere, tu evites d'utiliser des fonctions systemes POSIX ou l'API d'un systeme d'exploitation particulier. Et si l'utilisateur veut appeler ton programme avec le fichier .xml qui est dans le repertoire, il peut toujours rediriger la sortie de ls vers l'entree de ton programme...

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Août 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Alors j'ai rajouté le fichier, finalement en argument de mon main et ca marche nikel
    Maintenant 2ieme problème, l'entrée de mon exectuble est un fichier et je voudrais que la sortie soit un nouveau fichier (=entrée + modif) avec un nom différent
    Comment faire ?
    Car pour l instant ma sortie est en dur dans mon code
    Merci encore pour vos réponses

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Août 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    C'est bon j'ai réussi
    POur ceux qui veulent savoir on sait jamais, je traite la chaine de caractère d'entrée en lui appliquand une modification
    Merci a tous

  7. #7
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par parisjohn
    POur ceux qui veulent savoir on sait jamais, je traite la chaine de caractère d'entrée en lui appliquand une modification
    Le plus simple, c'est quand meme d'avoir deux arguments:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
    int main(int argc, char *argv[])
    {
       ...
       if (argc != 3)
       {
          fprintf(stderr, "Usage: %s <file in> <file out>\n", argv[0]);
       }
       else
       {
          ...
       }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonctions,structures,lecture de fichier
    Par Djiinw dans le forum Débuter
    Réponses: 31
    Dernier message: 17/06/2013, 09h23
  2. Fonction de lecture de fichier (variable)
    Par virtuadrack dans le forum C++
    Réponses: 2
    Dernier message: 23/01/2009, 20h17
  3. lecture de fichier via une fonction d'analyse
    Par Rniamo dans le forum C++
    Réponses: 2
    Dernier message: 17/07/2008, 16h28
  4. Lecture de fichiers .wav et fonction random
    Par Pedrozito dans le forum Interfaces Graphiques
    Réponses: 9
    Dernier message: 22/04/2008, 16h23
  5. Réponses: 12
    Dernier message: 14/06/2004, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo