2010-06-29 1 views
4

저는 프로그래밍 전문가는 아니지만 약간의 경험이 있습니다. C에서 Fortran 프로그램으로 데이터 파일을 읽으려고하는 것은 1 주일 이상입니다.F90에서 C 데이터 파일 읽기

FILE * amatFile; 
amatFile = fopen("A.dat","wb"); 
for(krowa=0;krowa<N2;krowa++){ 
    fwrite(amat[krowa], sizeof(float), S2, amatFile); 
    } 
fclose(amatFile); 

및 F90 내 읽기 섹션은 다음과 같습니다 : C 프로그램은 다음과 같은 빈 형식 데이터 파일에 매트릭스를 저장

open(unit=1,file='AMAT.dat',form='unformatted') 
    DO i = 1,M 
      Do j = 1,N 
     READ(unit=1) AMAT(i,j) 
     A(i,j) = AMAT(i,j) 
     End do 
    End Do 
close(1) 

당신이 날 문제를 해결하는 데 도움이 될 수 있다면 정말 감사드립니다.

+0

그래서 무엇이 문제입니까? 숫자가 이해할 수없는 형식으로 읽혀지고 있습니까? 번호를 읽을 수 없습니까? 죄송 합니다만이 컴퓨터에서 Fortran을 실행할 수 없습니다. –

+1

일부 데이터는 어떻습니까? 16 진수 덤프, C 프로그램의 출력, F90 프로그램이 뱉어내는 것 ... – John

+0

fwrite는 이진, IEEE 부동 소수점 숫자를 쓸 것입니다. 포트란이 그들을 읽을 수있는 능력이 있다고 생각하게 만드는 이유는 무엇입니까? – bmargulies

답변

1

다소 detailed writup of Fortran IO에 기반하여, 나는 당신이 '형식이 잘못되었습니다'라고 오해하고 있다고 생각합니다. 형식이 지정되지 않은 것은 이진을 의미하지 않고 구분 된 텍스트를 의미합니다. C 프로그램은 분리 문자를 쓰지 않습니다. 가장 쉬운 해결책은 C 코드를 변경할 수 있다면 fwrite 대신 fprintf를 사용하고 Fortran IO의 예상과 일치하도록 형식을 정렬하는 것입니다. 그럴 수 없다면 다른 C 프로그램을 작성하여 기존의 출력을 읽고 fortran 호환 데이터를 작성하는 것이 좋습니다.