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 :

Compter le nombre de colonnes d'un fichier


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut Compter le nombre de colonnes d'un fichier
    Bonjour,

    Je possède un fichier contenant des données numériques rangées en colonnes, séparées par un ou plusieurs espaces.

    Etant donné qu'il peut y avoir un nombre important de colonnes (jusqu'à plusieurs centaines), j'aimerais trouver un moyen de compter le nombre de colonnes de mon fichier.

    Je sais qu'on peut facilement compter le nombre de lignes d'un fichier en Fortran 90 avec la fonction read, mais je n'arrive pas à faire de même pour les colonnes.

    Pourriez-vous m'aider ?

    Merci

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    et bien si toutes tes lignes ont le même nombre colonne, tu peux faire un truc du style:
    - read de la première ligne stocké dans une chaine de carac
    - tu compte le nombre d'espaces

    vu qu'à parament il est possible que tu ait plusieur espaces entre tes données, tu ne compte que le premier.
    cela donne quelquechose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    character(len=10000) :: toto !il te faut une chaine suffisament grande
    integer i,Ncarac,Ncolonne
    read(25,*)toto
    toto=trim(toto) !pour enlever les espaces de fin
    ncarac=len(toto)
    Ncolonne=1
    do i=2,N
      if ((toto(i)==' ').and.(toto(i-1)/=' ') Ncolonne=ncolonne+1
    end do
    bon je suis pas sûr que la fonction trim ne vire pas TOUS les espaces de la chaine.. à vérifier

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    Merci de ta réponse genteur slayer.

    J'ai apporté quelques modifications à ton code, et ça marche.

    Voilà le code pour ceux que ça intéresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         integer :: nb   ! nombres de colonnes du fichier
         integer :: ierr  
         character(len=10000) :: string ! chaine a lire
         integer :: i
     
         read(10,fmt="(a)",iostat=ierr) string
         nb = 1
         do i = 2, len_trim(string)
            if ( (string(i:i)==' ') .and. (string(i-1:i-1) /= ' ') ) then
               nb=nb+1
            end if
         end do
    Merci encore

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

Discussions similaires

  1. compter le nombre de colonnes d'un fichier
    Par ElCyril dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 16/06/2011, 18h13
  2. compter le nombre de fois qu'un fichier a été chargé
    Par phpaide dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/05/2006, 18h51
  3. [SQL]Compter le nombre de colonne
    Par dumser1 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2006, 10h53
  4. [débutant] nombre de colonne dan sun fichier csv
    Par mandagor dans le forum C++
    Réponses: 18
    Dernier message: 15/06/2005, 16h42
  5. Réponses: 2
    Dernier message: 02/03/2004, 20h38

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