gets命令的返回值

时间:2014-12-10 09:45:44

标签: file tcl tclsh

以下练习中gets命令的返回值是什么意思?

我尝试在命令行上通过file阅读tclsh

文件

           10      2       12      1       13
1       2       3       4       5        6
1       2       3       4       5
1       2       3       4a       5

命令&输出(命令行)

% set fp [open file r]
file4
% gets $fp line
45
%  gets $fp line
42
%  gets $fp line
41
%  gets $fp line
42
%  gets $fp line
-1
% close $fp

当我得到-1输出时,我关闭了文件指针$fp。但是值45 42 41 42意味着什么?

1 个答案:

答案 0 :(得分:3)

gets命令的man页面引用

  

语法:

     

获取channelId?varName?

     

此命令从channelId读取下一行,返回所有内容   最后一行(但不包括)行尾字符的行,和   丢弃行尾字符。

     

如果指定了varName,则在varName中返回一个空字符串   因为文件结束或非阻塞数据不足   模式,然后返回计数为-1。

     

如果省略varName,则返回该行作为结果   命令。如果指定了varName,那么该行将放在   由该名称变量,返回值是数量的计数   字符返回。

从手册页中可以看到,它返回gets命令在一行中读取的字符数。 在文件的第一行,它读取45个字符并返回45作为结果,字符串值将根据您的代码存储在变量line中。

对所有行重复此操作,并在达到该文件的eof后返回-1。