포트란 코드로 생성 된 바이너리 파일이 있습니다. 이 파일에는 복식 배열이 포함되어 있습니다. 내 C 프로그램에서 열어야하고 일반적인 배열과 같이 작업해야한다.C에서 fortran 바이너리 파일을 읽으려면 어떻게해야합니까?
어떻게해야합니까?
어떻게 이진 파일에 이중 유형이 표시됩니까?
포트란 코드로 생성 된 바이너리 파일이 있습니다. 이 파일에는 복식 배열이 포함되어 있습니다. 내 C 프로그램에서 열어야하고 일반적인 배열과 같이 작업해야한다.C에서 fortran 바이너리 파일을 읽으려면 어떻게해야합니까?
어떻게해야합니까?
어떻게 이진 파일에 이중 유형이 표시됩니까?
거의 모든 포트란 컴파일러있어, (즉, 바이너리) 포맷되지 않은 순차 파일, 시작 부분에 레코드의 길이를 작성하고 각 레코드의 끝. 일반적으로 길이는 4 바이트로 작성되지만 일부 컴파일러는 8 바이트를 사용합니다. 레코드는 단일 Fortran 쓰기 문으로 작성된 모든 것입니다. 이 배열에이 유형의 파일이있는 단일 Fortran 쓰기 문으로 작성된 경우 건너 뛸 4 바이트 또는 8 바이트, 배열, 4 바이트 또는 8 바이트의 추가 바이트가 있습니다. 16 진수 편집기로 파일을 보면이 사실을 알 수 있습니다. 배열이 다중 쓰기 명령문으로 조각 (예 : 열 또는 행)으로 작성된 경우 각 레코드는이 구조를 갖습니다.
파일이 Fortran에서 포맷되지 않은 것으로 기록 된 경우 Fortran 이중 유형은 해당 컴퓨터의 이진 표현 형식으로 기록됩니다. 동일한 컴퓨터 유형에서 C로 읽을 수 있어야합니다. 단순한 언어가 아닌 아키텍처를 변경하는 경우 이진 표현이 다를 수 있습니다.
Fortran에는 레코드 길이 정보를 포함하지 않는 다른 파일 액세스 방법이 있습니다. 예를 들어 직접 액세스. 스트림 액세스의 새로운 방법은 언어 간 호환성을 위해 설계되었습니다.
배열이 다차원 인 경우 Fortran에 행 주요 배열이 있고 C에 행 우선 행렬이 사용되기 때문에 배열을 조판 할 수 있습니다.
관련 질문 : 내 자신의 생각에 Fortran unformatted file format 및 reading fortran unformatted file with python
원칙적으로 당신은 할 수 없습니다.
포트란 이진 파일의 형식은 이며, 지정되지 않은입니다. 즉, 프로그램 상태를 포트란 바이너리 파일에 저장하고 같은 포트란 구현을 사용하여 다시 열 수는 있지만 다른 포트란 구현을 사용하더라도 안정적으로 그렇게 할 수는 없습니다.
이제 상태를 건강하게 저장할 수있는 제한된 방법이 있으므로 주어진 Fortran 바이너리 파일의 구조를 충분히 자세하게 설명 할 수 있습니다. C 프로그램에서 열고 내용을 읽으십시오. 그러나이 지식은 문제의 포트란 컴파일러에 따라 다릅니다.
가장 좋은 방법은 말하자면 [0, 1, 2, 3, 4, 256, 65536, 65537, 1e10, 1e20, 1e30, 1e40]
을 포함하는 포트란 배열을 작성하여 이진 파일에 작성하고 이진 편집기를 사용하여 무엇이 있는지 확인하는 것입니다. 그 후
, 당신은 .... 난 두려워 자신에
, 더 나은 방법 포트란 바이너리를 읽을 수는 C에 포트란 및 패스 배열에서 에서 그들을 읽을 사실이다. 그것은 당신에게 많은 고통을 줄 수 있습니다.
가장 어려운 부분은 포트란 서브 루틴을 감싸는 것입니다. C와 포트란 사이의 이름 맹 글링은 직설적이지 않습니다. 이는 사용하는 컴파일러 (즉, 플랫폼) 및 Fortran 버전에 따라 다릅니다. 간단한 예제는 here과 here입니다.
첫 번째 선택은 적절한 컴파일 옵션을 사용하여 "수동"으로 수행하는 것입니다.
팁 : 알 수있는 당신이 리눅스 또는 DLL 수출 뷰어와 같은 도구에 나노 명령을 사용할 수 있습니다 맹 글링.
더 나은 선택은 동작의이 종류를 처리하는 데 도움이 모듈 iso_c_binding을 소개 포트란 2003을 사용하는 것입니다.
여러 가지 방법으로 fortran이 파일을 쓸 수 있습니다. 열기 및 쓰기 문을 볼 필요가 있습니다. – agentp