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 :

Besoin Aide Conversion d'un script perl en C


Sujet :

C

  1. #1
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut Besoin Aide Conversion d'un script perl en C
    Salut à tous

    Mon language à moi est le perl et il me faudrai convertir un petit script en C.
    Est ce que quelqu'un aurait la gentillesse de m'aider :
    J'arrive à passer de C à perl mais de perl à C c'est beaucoup plus dur

    J'ai juste besoin d'ouvrir un fichier texte tabulé (valeurs séparées par des Tabulation) et de le mettre dans un tableau C.

    texte.txt
    • NM12345 0.15648156 0.024864 0.41894163 1.16416
      AA1641613 1.9811 0.18616 10.1654 23.1564
      etc.....

    Je ne connais pas à l'avance le nombre de ligne du tableau ni le nombre de colonne car tout mes fichiers sont différents.
    La premier colonne est du type texte+nombre et les colonnes suivants c'est du float. Le nombre de colonne est fixe par fichier.

    voici mon script perl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    open (F, "texte.txt");
    @tab=(); $i=0;
    while ($ligne=<F>) {
        chomp $ligne;
        $j=0;
        foreach $bob (split("\t", $ligne)) {
           $tab[$i][$j]=$bob;
           $j++;
        }
        $i++;
    }
     close F;
    Merci d'avance

  2. #2
    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
    Le Perl me semble parfaitement adapte a ton probleme. Pourquoi ressens tu le besoin de faire l'equivalent en C.

    En C, c'est plus complique. Il faut ouvrir le fichier (fopen), le lire ligne par ligne (fgets puis strchr pour remplacer le retour chariot en caractere de fin de chaine), analyser la ligne lue (strtok ou une fonction faite maison), et placer le contenu dans les tableaux qui vont bien, pourvus qu'il soient assez grands (ou faire un mecanisme plus flexible mais plus complexe a coup d'allocations (malloc) et de re-allocations (realloc) dynamiques). Enfin, il faut fermer le fichier (fclose) et liberer la memoire allouee, si besoin (free).

    La plupart des fonctions ci-dessus peuvent echouer. Il est donc necessaire de verifier proprement leurs valeurs de retour, et installer un mecanime de gestion des erreurs avec sortie propre du programme (fclose de tous les fichiers ouverts et free de toute la memoire allouee).

  3. #3
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    J'ai bien conscience que perl est bien adapté pour faire ça mais après j'ai besoin du tableau pour faire des calculs mathématiques très louds et là perl rame !!! 1 semaine d'excution !
    En C mes calculs seront beaucoup plus rapide car C est adapté pour ça....
    Programmer les calculs en C et écrire le résultat est pas très difficile.
    Je bloque seulemnt sur la création du tableau.

    Est il possible de faire le tableau en perl et de le récupérer avec C :

    Sinon peux tu me donner plus de détails sur la création du tableau en C :

    Je te remercie.

    Emeric

  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 Ickou
    Est il possible de faire le tableau en perl et de le récupérer avec C
    Tres certainement, mais c'est en dehors de mes competences. Un autre forum pourra t'aider. Par contre, c'est tres certainement la meilleure solution.

    Sinon peux tu me donner plus de détails sur la création du tableau en C
    Dans ton cas, il te faudrait un tableau de chaines de caracteres a deux dimensions (ligne, colonne). En C, une chaine de caractere est elle-meme un tableau de caractere termine par un '\0'.
    Ton tableau serait donc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char filecontent[MAXLINE][MAXCOL][MAXLENGTH];
    ce qui n'est pas tres pratique a utiliser. S'il est possible de faire le traitement ligne par ligne, cela simplifie les choses car on se debarrasse d'une dimension.
    La premiere colonne restera une chaine de caractere. Pour les autres, tu devras les convertir en flottant en utilisant strtod().

  5. #5
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    J'ai eu la réponse sur le forum Perl :

    Le module Inline::C permet d'écrire des subroutines perl en C
    Le C est compilé lors de la 1er excution.

    Du coup je peux prendre les avantages des 2 languages

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Ickou
    J'ai eu la réponse sur le forum Perl :

    Le module Inline::C permet d'écrire des subroutines perl en C
    Le C est compilé lors de la 1er excution.
    Wow, c'est cool ça...
    Du coup je peux prendre les avantages des 2 languages
    Au fait, comment prononces tu 'iguane' ?

    Maintenant répète après moi : language...

    Ok ?

  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 Emmanuel Delahaye
    Au fait, comment prononces tu 'iguane' ?
    Tu deviens de plus en plus abscons dans tes corrections orthographiques !

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par DaZumba
    Citation Envoyé par Emmanuel Delahaye
    Au fait, comment prononces tu 'iguane' ?
    Tu deviens de plus en plus abscons dans tes corrections orthographiques !
    Je trouve ça au contraire plutôt illustré, non ?

  9. #9
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Le module Inline::C permet d'écrire des subroutines perl en C Wink
    Le C est compilé lors de la 1er excution.
    La subroutine est réellement compilée à la volée?

    Thierry

  10. #10
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    Inline::C compile la partie C la première fois que le script est exécuté, et ne la recompile que si le script est modifié.

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

Discussions similaires

  1. Besoin d'aide pour faire fonctionner un script Perl pour un photomaton sous Linux.
    Par loran42o dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 29/05/2013, 10h31
  2. Besoin d'aide script PERL generateur de hits
    Par maiko dans le forum Web
    Réponses: 4
    Dernier message: 11/07/2009, 00h06
  3. Besoin d'aide script perl MERCI
    Par la_star160 dans le forum Langage
    Réponses: 1
    Dernier message: 11/08/2008, 13h36
  4. aide pour comprendre des Script perl
    Par la_star160 dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 21h40
  5. [RegEx] Lecture de fichier : conversion d'un script perl en php
    Par sroux dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2007, 17h42

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