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 :

C et XML, C et commande dos


Sujet :

C

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut C et XML, C et commande dos
    -Qui plus vite que l'autre au niveau temps d'exécution : C/C++ ou Java ?


    - Supposons qu'on a un outil open source( écrit en java et prend comme entrée un fichier XML et comme sortie un fichier XML) qu'on peut exécuter son fichier jar exécutable à partir de lignes de commandes (dos).
    Comment on appelle une commande dos à partir d'un programme C/C++?

    - Comment on manipule un fichier XML à partir d'un programme C/C++?

    - Comment on convertie un fichier.txt en fichier XML à partir d'un programme C/C++?
    par exemple chaque ligne du fichier.txt contient deux champs (un entier et une chaine de caractère) et le fichier XML à une structure déterminé.

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    J'aurais répondu : Salut à toi !

    -Qui plus vite que l'autre au niveau temps d'exécution : C/C++ ou Java ?
    /!\ Question dangereuse !
    J'ai récemment entendu : JAVA.
    A voir mais sans débattre.

    Comment on appelle une commande dos à partir d'un programme C/C++?
    Tu peut appeler, à moins que j'ai mal compris, une appli. externe via la commande system().

    Comment on manipule un fichier XML à partir d'un programme C/C++?
    Je dirais, tout comme on manipule un fichier en C/C++, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fopen();
    fwrite();
    fread();
    fclose();
    Comment on convertie un fichier.txt en fichier XML à partir d'un programme C/C++?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    xml=fopen ("fichier.xml", mode);
    fread (ptr, 1, 500, file); 
    txt=fopen("fichier.txt", mode);
    fwrite(ptr,1,500,txt);
    Maintenant si on prend ta phrase plus bas :

    Tout dépend de la STRUCTURE de ton fichier TXT. S'il est présenté comme un fichier .properties ou .ini avec des champs spéciaux ou si c'est un peu fait maison. Dans tout les cas à toi de bouiner ton petit truc en solo. Implémentation maison !




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Merci, S'il vous plait ?
    J'aurais répondu : De rien !

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut
    Salut,

    les deux commandes dos suivantes marchent correctement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\> cd C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\Ex1\Galicia3\Galicia3
     
    C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\Ex1\Galicia3\Galicia3\>java -Xmx1024m -cp galicia3.jar galicia.algorithms.lattice.MagaliceA_Lat "teste-file.bin.xml" false "teste-file.lat.xml"
    J'ai eu des erreurs suite à la compilation :

    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
    1>------ Début de la génération*: Projet*: Ex1, Configuration*: Debug Win32 ------
    1>Compilation en cours...
    1>main.c
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4013: 'System' non défini(e)*; extern retournant int pris par défaut
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4129: 'D'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4129: 'A'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4129: 'M'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4129: 'V'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4129: 'P'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4129: 'E'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4129: 'G'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\administrateur\mes documents\visual studio 2008\projects\ex1\ex1\main.c(7) : warning C4129: 'G'*: caractère de séquence d'échappement non reconnu
    1>Édition des liens en cours...
    1>main.obj : error LNK2019: symbole externe non résolu _System référencé dans la fonction _main
    1>C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\Ex1\Debug\Ex1.exe : fatal error LNK1120: 1 externes non résolus
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\Ex1\Ex1\Debug\BuildLog.htm"
    1>Ex1 - 2 erreur(s), 9 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
    Voici mon programme C sous Visual Studio 2008:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include<conio.h>
    #include<stdio.h>
    #include<dos.h>
    void main()
    {
    printf("hello\n");
    System("cd C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\Ex1\Galicia3\Galicia3");
    System("java -Xmx1024m -cp galicia3.jar galicia.algorithms.lattice.MagaliceA_Lat teste-file.bin.xml false teste-file.lat.xml");
    }

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    il faut écrire system, pas System.

    Il faut aussi doubler les \ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("cd C:\\Documents and Settings\\A...");

  5. #5
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdlib.h>
    #include <stdio.h>
     
    int main(void)
    {
       puts("hello");
       system("cd C:\\Documents and Settings\\Administrateur\\Mes documents\\Visual Studio 2008\\Projects\\Ex1\\Galicia3\\Galicia3");
       system("java -Xmx1024m -cp galicia3.jar galicia.algorithms.lattice.MagaliceA_Lat teste-file.bin.xml false teste-file.lat.xml");
       return 0;
    }

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut
    Salut,


    je ne trouve pas le fichier résultat après l'exécution.
    Alors je le trouve si je tapes les deux commandes dos dans l'invite des commandes.

    Après l'exécution j'ai ceci:


    hello
    Exception in thread "main" java.lang.NoClttice/MagaliceA_Lat
    Appuyez sur une touche pour continuer...

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    C'est normal, les deux commandes system sont exécutées séparément.

    Il faudrait
    • ou changer le répertoire courant à la place de la première commande system : SetCurrentDirectory ;
    • ou passer par un script batch ;
    • ou encore lancer le programme C depuis le répertoire qui va bien (C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\Ex1\Galicia3\Galicia3).

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut
    Merci.

    Pouvez-vous me détailler votre solution?

    Où je vais faire les modifications?

  9. #9
    Invité(e)
    Invité(e)
    Par défaut
    Pouvez-vous me détailler votre solution?
    Laquelle, j'en suggère trois ?


    • changer le répertoire courant à la place de la première commande system : SetCurrentDirectory ;

    Que ne comprends tu pas ? L'idée est de remplacer le premier appel à system par la fonction SetCurrentDirectory. (c'est une fonction win32, on en trouve la doc sur MSDN.


    • passer par un script batch

    L'idée est de créer un document text .bat qui contient les deux lignes de commandes que tu veux exécuter.
    Après, il suffit d'exécuter le dit script par la commande system.


    • lancer le programme C depuis le répertoire qui va bien

    Il suffit de copier l'exécutable dans le répertoire de travail voulu (ici C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\Ex1\Galicia3\Galicia3)

  10. #10
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par vivaviva Voir le message
    -Qui plus vite que l'autre au niveau temps d'exécution : C/C++ ou Java ?
    En général, le code natif est plus rapide, donc C/C++...

    Citation Envoyé par vivaviva Voir le message
    Comment on appelle une commande dos à partir d'un programme C/C++?
    "system()" est portable, mais est franchement crade à utiliser (aucun contrôle du processus engendré notamment).
    Vu qu'on utilise cette commande pour quelque chose de spécifique à l'OS hôte, autant utiliser directement la bonne fonction si elle existe... En l'occurrence, "CreateProcess" sous Windows.

    Citation Envoyé par vivaviva Voir le message
    - Comment on manipule un fichier XML à partir d'un programme C/C++?
    Avec une librairie dédiée en général. Tu peux utiliser par exemple Xerces, ou MS-XML, et il en existe sûrement plein d'autres.
    http://xml.developpez.com/

    Citation Envoyé par vivaviva Voir le message
    - Comment on convertie un fichier.txt en fichier XML à partir d'un programme C/C++?
    Il faut parser "à la main" le fichier texte, et remplir "à la main" aussi le XML, puis le sauvegarder une fois que c'est terminé.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. [VB6] probleme de redirection d'une commande DOS
    Par WriteLN dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/06/2003, 09h36
  2. [TP]Peut-on mettre un commande dos dans le prog?
    Par pierre olmes dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 24/05/2003, 22h28
  3. [langage] Commande DOS dans un programme
    Par Jibees dans le forum Langage
    Réponses: 15
    Dernier message: 23/04/2003, 12h08
  4. commande dos pour résoudre une adresse ip
    Par stephy dans le forum Développement
    Réponses: 2
    Dernier message: 17/12/2002, 14h04

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