Chaîne de format pour la sortie dépendant d'une variable
Je voudrais avoir une Fortran écrire déclaration formaté dépendent d'une variable. Par exemple, je pourrais écrire:
write(*,'(3f15.3,3f9.2)') x,y,z,(var(i),i=1,nvari)
où nvari = 3
. Mais, si, dans certains cas, en fait, j'ai 4 variables (c'est à dire nvari = 4
). Je voudrais écrire quelque chose comme ceci:
write(*,'(3f15.3,nvari(f9.2))') x,y,z,(var(i),i=1,nvari)
Maintenant, nvari
peut être n'importe quoi et la sortie fonctionne comme je le souhaite. Comment puis-je faire quelque chose comme ce travail?
source d'informationauteur Flux Capacitor | 2012-03-26
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez Intel fortran, il a une extension propriétaire, vous pouvez inclure une variable existante dans des crochets à agir en tant que rédacteur de devis:
Si vous le compilateur prend en charge,
'(3f15.3, *(f9.2))'
Si vous avez un vieux compilateur, il suffit d'utiliser un plus grand nombre que ce que vous avez des articles à la sortie, par exemple,
'(3f15.3, 999(f9.2))'
. Vous n'avez pas à utiliser le format.Pour les affaires les plus complexes, vous pouvez écrire un format d'une chaîne et l'utiliser comme votre format:
Avec la compréhension de formats, y compris le format de réversion, l'utilisation de formats de chaîne est rarement nécessaire.
Au lieu d'écrire le format directement dans l'écriture, à la déclaration, il est également possible d'utiliser une variable de caractère.
Maintenant, il est possible de manipuler le caractère variable pour contenir la voulais nombre de répétitions avant la radiation de la déclaration, à l'aide d'un soi-disant interne écrire ou nous écrire à l'intérieur du fichier.
(Assurez-vous de l'déclaré longueur de
my_fmt
est assez long pour contenir l'ensemble de la chaîne de caractères.)Vous voulais écrire quelque chose comme ceci:
En fait, il y a un vieux truc dans la norme Fortran qui vous permet d'omettre le
nvari
donc:ou encore ainsi:
La norme dit que le dernier descripteur dans le format est implicitement répété aussi souvent que nécessaire pour accueillir toutes les variables dans la liste. Que 'le dernier descripteur ğ pourrait être mis entre parenthèses ce que le dernier groupe de descripteurs est implicitement répétée, par exemple: