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

Fortran Discussion :

[iFort 9.1] Manipulation de caractères


Sujet :

Fortran

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [iFort 9.1] Manipulation de caractères
    Bonjour à tous,

    J'utilise un programme en Fortran 90 dans lequel il y a la concatenation de deux chaines de caracteres avec //.
    En compilant avec g95 ou gfortran pas de problème!

    Mais avec le compilateur Intel, j'ai un probleme à l'execution. Donc voici le petit test que j'ai réalisé.

    si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    program main
      implicit none
      integer      :: i1
      character*30 ::fich,dir
      dir='./RESU/res/'
      fich(1:len_trim(dir))=trim(dir)
      i1=len_trim(dir)+1
      fich(i1:i1+6)='dbg2.da'    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      write(*,*)fich
      stop
    end program main
    Cela fonctionne tres bien. Mais si je veux un caractère en plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    program main
      implicit none
      integer      :: i1
      character*30 ::fich,dir
      dir='./RESU/res/'
      fich(1:len_trim(dir))=trim(dir)
      i1=len_trim(dir)+1
      fich(i1:i1+7)='dbg2.dat' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      write(*,*)fich
      stop
    end program main
    Cela ne marche plus!!
    à l'execution j'ai un message d'erreur:
    "./a.out: symbol lookup error: ./a.out: undefined symbol: ?0_memcopyA"


    Si quelqu'un a une explication?
    Merci
    cordialement.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Le programme est tout à fait légal, c'est effectivement un problème de compilateur. J'ai testé avec ifort 9.1 pour Win 32 et ça fonctionne très bien...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut precision
    il s'agit egalement du compilateur ifort 9.1, mais sous linux sur machine parallèle . J'ai résolu le problème en concaténant les lettres une à une, mais j'avoue que cela défie toute logique.
    Merci

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Comme tu as observé, une erreur de compilateur se contourne souvent en modifiant légèrement le code. Je ne sais pas si ton code réel est aussi simple que celui illustré, mais si c'est le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      fich(1:len_trim(dir))=trim(dir)
      i1=len_trim(dir)+1
      fich(i1:i1+7)='dbg2.dat'
    se réduit à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      fich = trim(dir) // 'dbg2.dat'
    Peut-être ce code fonctionne t-il. C'est en tout cas plus simple que de copier les caractères 1 par 1...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 110
    Points : 130
    Points
    130
    Par défaut
    Bonjour,

    j'ai récemment eu ce type de message d'erreur: il venait du fait que sur notre machine on avait mis à jour les compilateurs Intel de 9 à 10.

    Certains codes (pas tous) compilés avec le compilateur 9 crachaient cette erreur.

    Deux solutions:
    1) linker dynamiquement avec les bibliothèques de ifort 9
    2) recompiler avec le compilateur 10

Discussions similaires

  1. Comment manipuler les caractères japonais
    Par cmoijulien dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/07/2007, 14h14
  2. Réponses: 16
    Dernier message: 30/01/2007, 00h20
  3. Manipulation de caractères
    Par Death83 dans le forum C++
    Réponses: 4
    Dernier message: 18/12/2006, 07h58
  4. [VB]manipulation des caractères d'un string
    Par lacsap49 dans le forum VB.NET
    Réponses: 5
    Dernier message: 16/06/2006, 18h43
  5. Aide sur une fonction / pbm de manipulation de caractère
    Par captainamerica75 dans le forum Access
    Réponses: 3
    Dernier message: 16/02/2006, 11h54

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