0

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

我试图在命令行上阅读filetclsh

文件

           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输出时,我关闭了 file-pointer $fp。但是这些值45 42 41 42是什么意思?

4

1 回答 1

3

引用命令的手册gets

句法 :

获取 channelId ?varName?

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

如果指定了 varName 并且由于文件结尾或非阻塞模式下的数据不足而在 varName 中返回一个空字符串,则返回计数为 -1。

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

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

这对所有行重复,一旦eof到达该文件,将返回 -1。

于 2014-12-10T12:17:32.527 回答