标题: [提问]这个TCL脚本哪里写错了? [打印本页] 作者: linwenyan 时间: 2007-10-26 22:32 标题: [提问]这个TCL脚本哪里写错了? set FileId1 [open D:/data.txt r]
set FileId2 [open D:/result.txt w]
gets $FileId1 str1
set len [llength $str1]
set i 0
while {![eof $FileId1]} {
gets $FileId1 str2
while {$i<$len} {
puts $FileId2 "[lindex $str1 $i] : [lindex $str2 $i]"
incr i 1
}
puts $FileId2 " "
}
close $FileId1
close $FileId2
帮忙看一下这个脚本有什么错误?只能输出第一次循环的结果,不知道问题出在哪里?
谢谢作者: dpdpdp 时间: 2007-10-26 22:59
gets $FileId1 str1
set len [llength $str1]
这两句之后len=1
所以作者: linwenyan 时间: 2007-10-26 23:18
原帖由 dpdpdp 于 2007-10-26 22:59 发表
gets $FileId1 str1
set len [llength $str1]
这两句之后len=1
所以
谢谢
不过len=10
里面的循环没问题,是外层的循环出问题了。作者: dpdpdp 时间: 2007-10-26 23:19
忘了问 这个脚本要实现什么功能?作者: linwenyan 时间: 2007-10-26 23:23
把一个文件的数据按行读取
然后按 a : b 这样的格式输出到另一个文件中作者: dpdpdp 时间: 2007-10-26 23:27
形如
data.txt:
a b c d e...
f g h i j k ...
要得到什么样的result.txt?作者: linwenyan 时间: 2007-10-26 23:28
这个脚本运行后只输出了第一行转换格式后的结果,其它行都没有作者: linwenyan 时间: 2007-10-26 23:29
a :f
b :g
c :h
……作者: dpdpdp 时间: 2007-10-26 23:30
加我QQ 2742111 一起研究作者: linwenyan 时间: 2007-10-26 23:32
a b c d
e f g h
i j k l
……
输出:
a : e
b : f
c : g
d : h
a : i
b : j
c : k
d : l
……作者: dpdpdp 时间: 2007-10-26 23:33
多行情况也是类似处理是吗 行转换成列 然后中间加冒号作者: linwenyan 时间: 2007-10-27 00:07
原来是i赋值出了问题 ,谢谢dpdpdp指点
因为set i 0放在while循环外面,所以当外层while循环一次以后再循环第二次时由于i没有重新赋值,内层while循环无法执行,导致没有输出,所以只要把set i 0放到外层while循环里面就可以了
set FileId1 [open D:/data.txt r]
set FileId2 [open D:/result.txt w]
gets $FileId1 str1
set len [llength $str1]
while {![eof $FileId1]} {
set i 0
gets $FileId1 str2
while {$i<$len} {
puts $FileId2 "[lindex $str1 $i] : [lindex $str2 $i]"
incr i 1
}
puts $FileId2 " "
}
close $FileId1
close $FileId2作者: dpdpdp 时间: 2007-10-27 22:12
其实我白痴了 一上来没搞清楚状况就开始撇了