跳线问题

时间:2011-03-25 05:30:02

标签: tcl

以下代码正在跳过奇数行,例如1,3,5,7,9 ......必须使用此代码从文件中获取所有行

set in [filename r]
seek $in 0 start
while { [gets $in line] != -1 } {
    gets $in line
    puts $line
}

2 个答案:

答案 0 :(得分:4)

你在条件下进行一次gets $in line,进入循环体内进行一次;因此,在条件中读取的行会丢失。您可能想要删除循环体中的那个。

答案 1 :(得分:0)

你已经使用了两倍,这就是为什么你只得到奇数行

其他解决方案:

而不是使用获取我更喜欢使用读取函数来读取文件的整个内容,然后逐行处理。因此,我们通过将其作为行列表来完全控制文件操作

设置fileName [lindex $ argv 0]

catch {set fptr [open $ fileName r]};

设置内容[read $ fptr]; #Read文件内容

关闭$ fptr;关闭文件,因为它现在已被阅读

设置splitCont [split $ contents“\ n”]; #Split新行上的文件内容

splitCont是将文件行作为单个元素的列表