Question

Je suis en train d'écrire des fichiers de données binaires à partir Fortran, mais je trouve les interfaces de fichiers réguliers très limitant, je me demande si Fortran a des fonctions compilant POSIX.

J'ai trouvé cette norme: IEEE 1003,9 à 1992, mais je ne sais pas si est entièrement pris en charge par la plupart des compilateurs communs (ou si je dois activer les drapeaux). Je ne peux trouver aucune information pratique, pouvez-vous me donner une suggestion?

BTW, je suis en train d'écrire des fichiers d'image, je veux d'abord essayer avec tga / pgm . Aussi je ne veux pas ajouter une dépendance aux bibliothèques externes, merci!

Solution:

Enfin j'ai pu écrire ppm , et je devais éviter l'impression de nouvelle ligne à la fin de la boucle interne, le code final est comme suit:

      subroutine imgwrite()
      implicit none
*     ******************************************************************
      include 'image.f'
*     ******************************************************************
      integer x, y, i

      write(imgunit, '(A)') 'P3'
      write(imgunit, '(I4)') imgwidth
      write(imgunit, '(I4)') imgheight
      write(imgunit, *) 255

      do 10 y=1, imgheight
        do 20 x=1,imgwidth
          write(imgunit,100) (int(imgpixels(x,y,i)*255D0), i=1,3)
20      continue
        write(imgunit,110)
10    continue


100   FORMAT(3(I4),$)
110   FORMAT((/))

      return
      end

Personne ne fournit aucune information à propos de POSIX en FORTRAN.

Merci.

Était-ce utile?

La solution

TGA est un format très simple, même si elle est binaire, il devrait donc être possible d'écrire de FORTRAN. Je ne voudrais pas essayer TIFF, PNG, GIF ou JPG en FORTRAN sans l'aide des bibliothèques externes, cependant.

Vous trouverez peut-être que l'un de la famille des netpbm formats est plus facile d'écrire, et ils seraient facilement converti en TGA ou tout autre format que vous pourriez avoir besoin pour l'affichage ou le traitement ultérieur avec des commandes simples. Les formats de PBM comprennent à la fois ASCII pur et saveurs binaires afin qu'ils puissent être écrits (quoique très inefficacement), même si l'accès de fichier binaire est problématique. La suite d'outils comprend la conversion vers et d'environ 100 autres formats de fichiers image.

Modifier Désolé que je ne peux pas être plus utile sur la façon d'aller réellement sur l'écriture des fichiers de FORTRAN, mais des cartes perforées étaient monnaie courante dernière fois que j'utilisé la langue. ; -)

Autres conseils

Problème avec la lecture et l'écriture de fichiers binaires, aléatoire ou séquentielle, pour d'autres langues à utiliser est que le système Fortran io utilise d'autres informations dans le fichier. Je ne me souviens pas qu'il soit dans la norme F77, mais certainement la plupart des PC et des compilateurs unix fait cela.

Par exemple, si l'écriture dans un fichier séquentiel binaire

write(bsf) doublevariable, realvariable

le fichier contiendrait (si vous pouviez lire binaire)

12<value of double><value of real>12

Chaque enregistrement a des marqueurs d'enregistrement qui sont la longueur en octets de ce qui a été écrit à l'avant et à la fin. Cela est nécessaire parce que chaque enregistrement peut avoir une longueur différente et lors de la lecture on ne dispose pas de lire tout ce qui a été écrit pour un enregistrement. Par exemple, si l'on était en train de lire celle ci-dessus pourrait avoir

read(bsf) doublevariable

La prochaine lecture de BSF doit être au début de l'enregistrement suivant.

lire ou écrire des fichiers Donc binaires à partager avec d'autres langues devrait être fait par une bibliothèque écrite en C ou toute autre langue qui ne fait pas ce que fait Fortran,

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top