2

これが私の問題の単純化されたバージョンです。異なるデータですが、最初の行は同一で、同じプログラムによって生成された 2 つのテキスト ファイルがありますが、OS が異なる可能性があります。emacs がそれらの 1 つを読み取ると、DOS 形式であると表示されますが、もう一方を読み取ると表示されません。

いくつかの Hex エディター (Kubuntu の Bless、GHex、OKTeta) を使用しましたが、それらすべてで同じことがわかります。つまり、最後の行を含め、両方のファイルのすべての行が OD OA (CR LF) のシーケンスで終わるということです。

だから私の質問は次のとおりです。emacsはDOSファイルとそうでないものをどのように判断しますか?また、Hexエディターが表示または追加しないファイルに何か他のものがありますか?

両方のファイルは同じ名前で、異なるディレクトリにあります。また、文字列を解析し、emacs が DOS としてリストするファイルで失敗した C++ コードがあるため、この問題に遭遇しました。そのため、問題は実際にはファイルの内容にあります。

最後の注意: C/C++ タグがないことに気付くでしょう。この状況に対処するために C++ コードを変更する方法についてアドバイスを求めているわけではありません。私はそれを行う方法を知っています。

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

a

4

1 に答える 1

1

Emacs は、ファイルを読み取るときに CRLF を LF に変換し、書き出すときに LF を CRLF に戻すことによって DOS ファイルを処理します。そのため、ファイルに単独の LF がある場合、バッファが変更されていなくても、読み取りと書き込みによって CR が追加されます。このため、ファイルの途中にこのような LF が隠されている場合、Emacs はそのファイルを DOS としてではなく UNIX ファイルとして扱います。

于 2012-10-01T02:09:51.377 に答える