linwenyan 发表于 2007-10-26 22:32:05

[提问]这个TCL脚本哪里写错了?

set FileId1
set FileId2
gets $FileId1 str1
set len
set i 0
while {!} {
        gets $FileId1 str2
        while {$i<$len} {
                puts $FileId2 "        : "
                incr i 1
                }
        puts $FileId2 "                                           "
        }
close $FileId1
close $FileId2

帮忙看一下这个脚本有什么错误?只能输出第一次循环的结果,不知道问题出在哪里?
谢谢

dpdpdp 发表于 2007-10-26 22:59:14

gets $FileId1 str1
set len
这两句之后len=1
所以

linwenyan 发表于 2007-10-26 23:18:03

原帖由 dpdpdp 于 2007-10-26 22:59 发表 http://bbs.51testing.com/images/common/back.gif
gets $FileId1 str1
set len
这两句之后len=1
所以

谢谢:)
不过len=10
里面的循环没问题,是外层的循环出问题了。

dpdpdp 发表于 2007-10-26 23:19:10

忘了问 这个脚本要实现什么功能?

linwenyan 发表于 2007-10-26 23:23:17

把一个文件的数据按行读取
然后按 a : b 这样的格式输出到另一个文件中

dpdpdp 发表于 2007-10-26 23:27:33

形如
data.txt:
a b c d e...
f g h i j k ...
要得到什么样的result.txt?

linwenyan 发表于 2007-10-26 23:28:19

这个脚本运行后只输出了第一行转换格式后的结果,其它行都没有

linwenyan 发表于 2007-10-26 23:29:33

a :f
b :g
c :h
……

dpdpdp 发表于 2007-10-26 23:30:52

加我QQ 2742111 一起研究

linwenyan 发表于 2007-10-26 23:32:35

ab cd
efgh
i   jk   l
……
输出:
a : e
b : f
c : g
d : h

a : i
b : j
c : k
d : l

……

dpdpdp 发表于 2007-10-26 23:33:45

多行情况也是类似处理是吗 行转换成列 然后中间加冒号

linwenyan 发表于 2007-10-27 00:07:00

原来是i赋值出了问题 ,谢谢dpdpdp指点:)
因为set i 0放在while循环外面,所以当外层while循环一次以后再循环第二次时由于i没有重新赋值,内层while循环无法执行,导致没有输出,所以只要把set i 0放到外层while循环里面就可以了

set FileId1
set FileId2
gets $FileId1 str1
set len
while {!} {
        set i 0
        gets $FileId1 str2
        while {$i<$len} {
                puts $FileId2 "        : "
                incr i 1
                }
        puts $FileId2 "                                           "
        }
close $FileId1
close $FileId2

dpdpdp 发表于 2007-10-27 22:12:12

:lol 其实我白痴了 一上来没搞清楚状况就开始撇了

这就是需求没明确,呵呵

JetSky 发表于 2009-12-21 23:26:36

路过学习。:lol
页: [1]
查看完整版本: [提问]这个TCL脚本哪里写错了?