Я хочу скопировать файл из папки и записать в определенных строках файла, используя fortran. Я использую Windows, компилятор GNU fortran. Вот пример файла и кода. file1.txt
Как писать на определенных строках в fortran
1 *
2 **
3 ***
4 ****
5 *****
6 ******
7 *******
8 ********
9 *********
10 **********
Вот код: я определил некоторые переменные. Только если совпадают два критерия (конкретное значение переменной и номер строки), я хочу записать в новый текст в файле. Я попытался использовать команду system
для копирования, но это не удается. Может ли кто-нибудь сказать мне правильный способ использования этого? И программа получила время выполнения ошибки FORMAT present for unformatted text
program read
integer :: a,b,c,d,e
CHARACTER (LEN=200) :: str
a=0
b=1
c=0
d=1
e=0
!call system ("copy" // "D:\test1\file1.txt"," ", // "D:")
!This command fails
open (unit=10, file="file1.txt", access="direct", &
form="unformatted", action="readwrite", recl=100)
do i=1,10,1
read (10,*) str
if(a==0 .AND. i==3) then
write(10,100) 'This is ',i,' line'
else if(b==0 .AND. i==4) then
write(10,100) 'This is ',i,' line'
else if(c==0 .AND. i==5) then
write(10,100) 'This is ',i,' line'
else if(d==0 .AND. i==6) then
write(10,100) 'This is ',i,' line'
else if(e==0 .AND. i==7) then
write(10,100) 'This is ',i,' line'
100 format (2a,i0,1X)
end if
end do
close (unit=10)
end program
Могу ли я читать и писать в том же файле? Пожалуйста, поделитесь своими комментариями. Я сослался на некоторые вопросы Fortran - How to write data to specific line in the file?, но не мог мне помочь.
Во-первых изменить ваш "неформатированный" в "отформатированных". Unformatted означает двоичный и отформатированный текст (более или менее). Но имейте в виду, что файлы прямого доступа требуют, чтобы все строки имели одинаковую длину. Как вы использовали 'system', как это произошло? –
Обновление файла «на месте» возможно, но может быть сложно. Обычно гораздо проще читать файл и записывать строки в новый файл, заменяя те, которые вы хотите заменить по ходу дела. Этот последний подход позволит избежать беспорядка, который допускает ошибки в вашем прямом доступе, и вы оставите вас в первый раз, когда будете работать с файлом. Тебе повезло? –
@HighPerformanceMark вы можете сказать мне способ сделать копию файла? – user3705273