1

Windows で常に実行されるミニ アプリケーションを作成しています。次の 2 つのタスクがあります。

  1. UNIX システムから作成されたテキスト ファイルを読み取り、同じ内容の新しいファイルを出力しますが、windows ファイルで終了します。

  2. Windows システムからテキスト ファイルを読み取り、同じ内容の新しいファイルを出力しますが、UNIX ファイルの末尾が付きます。

チャネル入力の行末は、常に tcl から自動的に処理される必要があります。

ただし、-eofchar は 2 つの引数 (1 つは入力用、もう 1 つは出力用) を想定しています。タスク 1 を実行するために -eofchar に引数として何を渡す必要があり、タスク 2 を実行するには何を渡す必要がありますか?

make windows eof proc の私のコード:

proc MakeWin {} {
    # read file

    set types {
        {{All Files}        *             }
    }
    set filename [tk_getOpenFile -filetypes $types]
    set infile [open $filename]

    # open file for writing

    set PathWname [tk_getSaveFile -filetypes $types -initialdir $DefPath -title "Save Results as:"]
    set outfile [open $PathWname w]

    # chan configure $outfile -eofchar  ?? 
    #
    while {[gets $infile line] >= 0} {
        puts $outfile $line
    }
    close $infile
    close $outfile
}
4

1 に答える 1

2

マンページを作成します:

-eofchar char

-eofchar {inChar outChar}

このオプションは、ファイルの終わりマーカーとして Control-z (\x1a) を使用する DOS ファイル システムをサポートします。char が空の文字列でない場合、この文字は、入力中に検出されたときにファイルの終わりを示します。出力の場合、チャネルが閉じられると、ファイルの終わり文字が出力されます。char が空の文字列の場合、特別なエンドオブファイル文字マーカーはありません。読み取り/書き込みチャネルの場合、2 つの要素のリストは、それぞれ入力と出力のファイル マーカーの末尾を指定します。便宜上、読み取り/書き込みチャネルのファイル終了文字を設定するときに、読み取りと書き込みの両方に適用される単一の値を指定できます。読み取り/書き込みチャネルのファイル終了文字を照会すると、常に 2 つの要素のリストが返されます。-eofchar のデフォルト値は、Windows でのファイルを除くすべての場合で空の文字列です。その場合、-eofchar は読み取り用の Control-z (\x1a) であり、書き込み用の空の文字列です。-eofchar 値の許容範囲は \x01 ~ \x7f です。-eofchar をこの範囲外の値に設定しようとすると、エラーが発生します。

私はこれを、Windows ファイルを読み込んで UNIX を書くのに、何もする必要がないことを言っていると読ん-eofcharだ。UNIX ファイルを読み込んでウィンドウに書き込むには、次のようにします。\x1a""

chan configure $infile -eofchar ""
chan configure $outfile -eofchar \x1a

チャネルが一方向に開かれている場合、 inputおよびoutputを指定する必要はないようです。eofchar

免責事項:これはマンページを読むことに基づいています。私は自分でこのようなことをしたことがありません。

于 2013-06-27T08:06:04.790 に答える