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 :

Comment saisir une chaine de caractères vides à l'écran ?


Sujet :

Fortran

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Points : 37
    Points
    37
    Par défaut Comment saisir une chaine de caractères vides à l'écran ?
    Salut

    je voudrai écrire un fichier de nom, prenom, age et qui se termine par une chaine vide.

    voici la syntaxe:

    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
    program cr_fich.f90
    implicit none
    integer,parameter :: numfich=1
    character (len=12)::nomfich
    caharacter(len=20)::nom, prenom
    integer::annee
     
    print*, annee
    read*, nomfich
    open(unit=numfich, file=nomfich, form ='unformatted', status = 'new')
    print*, 'nom, prenom, annee naissance pour finir)'
    do
      if (nom == '') exit
      write (numfich) nom, prenom, annee
    end do
    print*, 'fin creation fichier'
    close (numfich)
     
    end
    Je n'arrive pas à exécuter ce programme à cause de l'arret de boucle qui ne fonctionne pas. Comment saisir un chaine de caractères vides?
    Moi je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    repert (pour le nom)
    dupont francois 42
    '' '' 0
    (nom prénom et age sont séparés par des espaces)
    Merci

  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 problème vient probablement du fait que tu ne peux pas facilement lire une chaine vide avec le format « list-directed » (* après le read). Avec un format list-directed, le read demandera des input tant qu'il n'en aura pas assez pour alimenter les variables de la liste, et dans ce traitement, les Enter sont ignorés.

    Je crois que tu peux utiliser des virgules pour séparer les inputs ou des guillemets, mais ce n'est pas très élégant.

    Le mieux est d'utiliser une variable caractère assez longue, un format explicite (a) et décoder ensuite la variable caractère. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    character (100)  ReponseUsager
    ...
    read (*,'(a)') ReponseUsager
    if (len_trim(ReponseUsager) == 0) exit
    read(ReponseUsager,*) Nom, Prenom, Annee
    ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Arty, regarde bien ton programme...
    La seule saisie qu'il contient est:
    Et tu ne saisis jamais les autres valeurs (nom,prenom,...); ta boucle infinie n'est qu'une boucle d'écriture, il manque clairement la partie lecture, sinon il est normal que la condition if (nom == '') ne soit jamais remplie.

Discussions similaires

  1. [C#] Comment inverser une chaine de caractères ?
    Par just1980 dans le forum Contribuez
    Réponses: 6
    Dernier message: 01/05/2011, 20h35
  2. Réponses: 3
    Dernier message: 01/02/2006, 18h26
  3. Réponses: 2
    Dernier message: 03/10/2005, 16h23
  4. Réponses: 2
    Dernier message: 14/01/2005, 15h40
  5. comment vider une chaine de caractère
    Par gaut dans le forum C
    Réponses: 13
    Dernier message: 12/09/2003, 11h30

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