Tcl не может сохранить его правильно
В вашем фрагменте есть два глюка:
- пропущенные скобки для оценки вложенных команд около
lindex
(см. Мой комментарий): [lindex $aa $p]
- Вы
fconfigure
d stdout
, а не ваш файловый канал: fconfigure $outfile6 -translation binary
С этим исправленным у меня работает следующее:
set outfile6 [open "btest2.txt" w+]
fconfigure $outfile6 -translation binary
set aa {}
set p 0
for {set i 1} {$i <= 1000 } {incr i} {
lappend aa [expr (1000.0/$i )]
puts -nonewline $outfile6 [binary format "f" [lindex $aa $p]]
incr p
}
close $outfile6
Предложения по улучшению
Ваш фрагмент кажется мне слишком сложным, особенно конструкция петли. Упростите до:
- Лучше использовать
[scan %f $value]
для явного преобразования значения в представление с плавающей запятой, а не [expr]
?
- [двоичный формат] использует счетчик или подстановочный знак, например
f*
, для обработки нескольких значений: [binary format "f*" $aa]
- Вам не нужны переменные цикла
p
, используйте [lindex $aa end]
; или, лучше, переменная цикла для хранения одного добавленного элемента (вместо того, чтобы снова собирать его из списка).
-translation binary
подразумевает -encoding binary