51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1845|回复: 13
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-10-26 22:32:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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

帮忙看一下这个脚本有什么错误?只能输出第一次循环的结果,不知道问题出在哪里?
谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-10-26 22:59:14 | 只看该作者
gets $FileId1 str1
set len [llength $str1]
这两句之后len=1
所以
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-10-26 23:18:03 | 只看该作者
原帖由 dpdpdp 于 2007-10-26 22:59 发表
gets $FileId1 str1
set len [llength $str1]
这两句之后len=1
所以


谢谢
不过len=10
里面的循环没问题,是外层的循环出问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-10-26 23:19:10 | 只看该作者
忘了问 这个脚本要实现什么功能?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-10-26 23:23:17 | 只看该作者
把一个文件的数据按行读取
然后按 a : b 这样的格式输出到另一个文件中
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-10-26 23:27:33 | 只看该作者
形如
data.txt:
a b c d e...
f g h i j k ...
要得到什么样的result.txt?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-10-26 23:28:19 | 只看该作者
这个脚本运行后只输出了第一行转换格式后的结果,其它行都没有
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-10-26 23:29:33 | 只看该作者
a :f
b :g
c :h
……
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-10-26 23:30:52 | 只看该作者
加我QQ 2742111 一起研究
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-10-26 23:32:35 | 只看该作者
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

……
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-10-26 23:33:45 | 只看该作者
多行情况也是类似处理是吗 行转换成列 然后中间加冒号
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-10-27 00:07:00 | 只看该作者
原来是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
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-10-27 22:12:12 | 只看该作者
其实我白痴了 一上来没搞清楚状况就开始撇了

这就是需求没明确,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2009-12-21 23:26:36 | 只看该作者
路过学习。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-27 21:52 , Processed in 0.071116 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表