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 :

Ouvrir un fichier en C


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut Ouvrir un fichier en C
    Bonjour.
    je fais appel à vous car mes connaissances ont leur limite sur un programme que je fais.
    Dans mon programme j'ouvre un fichier avec fopen.

    fichier = fopen("Log.txt", "a");
    Ensuite j'écris dedans plein de trucs.
    Et je le ferme avec :
    fclose(fichier);

    Jusque là tout va bien et le résultat attendu est le bon.
    Mais j'aimerai qu'à la fin de tout ce que j'écris dedans, le fichier s'ouvre et s'affiche à l'écran. Comme si j'allais chercher mon fichier et que je double cliquais dessus.
    J'ai cherché mais je n'ai trouvé nul part.

    Merci de votre aide.

  2. #2
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Vous povez utiliser les commandes systemes si c'est jsute pour la phase de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          system("cat your_files");

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Je ne connais pas ceci.

    J'ai donc essayé :
    system("cat fichier");
    ou system("cat Log.txt");

    A chaque fois la même erreur :
    Library function error(return value == -3 (0xfffffffd))

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 492
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("cat your_files");
    Ceci n'est valable que sous Linux / Unix, où la commande cat est disponible. Sous Windows, cela ne fonctionnera pas. Il faut bien comprendre que la commande system("commande") exécute "commande" dans une console. Il faut donc que cette commande fonctionne dans la console du système utilisé.

    Mais j'aimerai qu'à la fin de tout ce que j'écris dedans, le fichier s'ouvre et s'affiche à l'écran. Comme si j'allais chercher mon fichier et que je double cliquais dessus.
    Ce n'est pas exactement "ouvrir un fichier dans un programme en C", puisque c'est l'action faite avec fopen() comme dans ton code. Ici, tu souhaites ouvrir un fichier avec l'éditeur par défaut. Sous Windows, c'est le bloc-note et en ligne de commande tu peux l'invoquer avec la commande notepad. Essaye de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("notepad Log.txt");
    Sous Linux, il faut utiliser un autre éditeur (gedit, vi, vim)...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Cette fois ci ça marche parfaitement.

    system("notepad Log.txt");

    Pour windows est parfait.

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 492
    Billets dans le blog
    1
    Par défaut
    Si cette solution te convient, merci de cliquer sur le bouton

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Après je ne voudrais pas abuser, mais ça ne marche pas totalement avec mon programme.

    En réalité le fichier ne s'appelle pas Log.txt, mais porte un nom en fonction de la date et l'heure de ce type "Log_25-04-2012.txt".
    Ce nom est stocké dans une variable genre "FileName"

    Et donc...
    system("notepad FileName");
    system("notepad %s", FileName);
    Etc...j'ai essayé plusieurs possibilités mais je n'ai pas obtenu ce que je souhaitais.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Finalement j'ai réussi avec une autre fonction.
    J'ai du inclure Shell32.Lib a mon projet.
    Et inclure :
    #include <Shellapi.h>

    ShellExecute(0, "open", Name, NULL, NULL, SW_SHOWNORMAL);

    Voilà merci pour votre aide !

  9. #9
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 492
    Billets dans le blog
    1
    Par défaut
    Après je ne voudrais pas abuser, mais ça ne marche pas totalement avec mon programme.
    T'inquiètes ^^

    Mais :
    Citation Envoyé par Papado Voir le message
    Ce nom est stocké dans une variable genre "FileName"

    Et donc...
    system("notepad FileName");
    system("notepad %s", FileName);
    C'est normal, car comme je l'ai dit :
    Il faut bien comprendre que la commande system("commande") exécute "commande" dans une console. Il faut donc que cette commande fonctionne dans la console du système utilisé.
    Dans system("notepad FileName");, la variable FileName n'est pas évaluée. system("notepad %s", FileName); non plus car la fonction system() n'est pas faite pour évaluer des chaînes formatées. Pour cela, il faut que tu crées une nouvelle chaine de caractères avec le contenu de la variable et non le nom de la variable.

    Pour cela, tu peux utiliser la fonction snprintf(). Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main(void)
    {
     
     
        char FileName[] = "C:\\Mes Documents\\developpez.c";
        size_t taille = sizeof(FileName) + strlen("notepad ");
        char * chaineInterpretable = malloc( taille );
     
        //int snprintf (char *str, size_t size, const char *format, ...);
        snprintf(chaineInterpretable, taille, "notepad %s", FileName );
     
        printf("Taille allouee : %d\n"
               "Chaine obtenue = [%s]\n\n", taille, chaineInterpretable);
     
        system(chaineInterpretable);
        free(chaineInterpretable); // par acquis de conscience
        return 0;
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2004, 13h55
  2. ouvrir un fichier
    Par sofiane61 dans le forum MFC
    Réponses: 3
    Dernier message: 10/01/2004, 23h04
  3. [java][Oracle]Ouvrir un fichier(blob) avec le browser
    Par marsup54 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 11/09/2003, 13h35
  4. [VBA-E] ouvrir un fichier .xls sans executer les macro
    Par lae_t2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2003, 17h07
  5. [Kylix] Ouvrir un fichier en étant dans KYLIX
    Par Jackepsi dans le forum EDI
    Réponses: 2
    Dernier message: 05/11/2002, 15h59

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