3

我想编写一个简短的 d 程序,用磅符号填充屏幕。这是我所拥有的

import std.stdio;
import std.process;
import std.conv;

void main(string[] args){
  auto lines =  environment.get("LINES");
  int line_count = to!int(lines); 
  for(int a = 1; a <= line_count; a++){
    writeln("######################################################################");
  }
}

我希望这会起作用,因为当我从终端执行“echo $LINES”时,它会打印“47”。但是,当我在同一会话中通过 rdmd 运行程序时,LINES 显示为空。这是在 Ubuntu Raring 上。有任何想法吗?

4

2 回答 2

7

如果您可以获取 command 的输出stty size,那可能比检查$LINESand$COLUMNS环境变量更可靠。

或者,您可以按照此答案中的说明调用TIOCGWINSZioctl 。

于 2013-08-05T21:01:20.483 回答
4

如果您只想要一个简单的修复,您可以export LINES COLUMNS输入您~/.bashrc的变量以使这些变量在您的程序中可用。

对于一个正确的解决方案,您可以尝试调用 ioctl TIOCGWINSZ,或者找到一个支持查询终端的 D 库(例如 ncurses 包装器)。

于 2013-08-05T20:04:35.727 回答