1,852
edits
(→Header file: Update.) |
(→Fortran Code: Update Fortran code.) |
||
Line 74: | Line 74: | ||
=== Fortran Code === | === Fortran Code === | ||
{{ | Fortran main program to read the plain ASCII matrix with the help of the Octave-C++ function. The read in matrix is printed to the screen. | ||
{{File|octave_file_io_example.f90|<syntaxhighlight lang="fortran"> | |||
program octave_file_io_example | program octave_file_io_example | ||
use iso_c_binding | use iso_c_binding | ||
implicit none | implicit none | ||
interface | interface | ||
function octave_load (filename | function octave_load (filename, data, numel) bind(c, name="octave_load") | ||
use iso_c_binding | use iso_c_binding | ||
implicit none | implicit none | ||
integer(c_int) :: octave_load | integer(c_int) :: octave_load | ||
character(kind=c_char), intent(in) :: filename(*) | character(kind=c_char), intent(in) :: filename(*) | ||
type(c_ptr), intent(out) :: data | type(c_ptr), intent(out) :: data | ||
integer(c_int), intent(out) :: numel | integer(c_int), intent(out) :: numel | ||
end function octave_load | end function octave_load | ||
end interface | end interface | ||
integer(c_int) :: res | integer(c_int) :: res | ||
type(c_ptr) :: data | type(c_ptr) :: data | ||
real(c_double), pointer :: fdata(:) | real(c_double), pointer :: fdata(:) | ||
integer(c_int) :: numel | integer(c_int) :: numel | ||
res = octave_load (c_char_' | res = octave_load (c_char_'data.txt' // c_null_char, data, numel) | ||
call c_f_pointer (data, fdata, (/numel/)) | call c_f_pointer (data, fdata, (/numel/)) | ||
write (*,*) fdata | write (*,*) fdata | ||
end program octave_file_io_example | end program octave_file_io_example | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
=== Compiling the code === | === Compiling the code === |