1

最近、Ada プログラミング言語を発見しましたが、C プログラミング言語にも問題があります。フォーム フィードが期待どおりに機能しません。

エイダの例:

with Ada.Text_IO; use Ada.Text_IO;

procedure Main is
begin
  New_Page;
end Main;

Cでも同じ:

#include <stdio.h>

int main (void) {
  printf ("\f");
  return 0;
}

どちらも、XTerm と Linux コンソール (両方とも zsh) で新しい行になるだけです。代わりに、Ctrl-L のように画面をクリアする必要があります。

で呼び出した場合

# ./main | cat -A

私は得る

^L

しかし、私がタイプすると

# cat -A

と入力します

Ctrl-L

私は得る

^L

それも。

フォーム フィードを Ctrl-L として機能させる方法を知っている人はいますか?

ご協力いただきありがとうございます!

4

2 に答える 2

2

@Nobilisの回答を編集してAdaバージョンを追加しようとしましたが、画面がクリアされたときに編集が失われたと思うので、別の試みを次に示します。

with Ada.Text_IO; use Ada.Text_IO;

procedure Main is
begin
  Put (ASCII.ESC & "[2J");
end Main;

大規模なプログラムでは、その後に「フラッシュ;」を付ける必要がある場合があります。上記は I/O パッケージによってバッファリングされる可能性があり、これが特別な端末コマンドであることを認識しない可能性があるためです。(Cでも同じだと思います:fflush(stdout);.)

于 2013-07-25T15:00:40.313 に答える