忍者ブログ

醜態のブロガー

とあるブロガーの醜態を綴る。

2024'05.04.Sat
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2007'04.22.Sun
ファイル比較のプログラムとして、手軽に使えるものに、Windows に付属している FC コマンドがあります(コマンドプロンプトから使う)。

このコマンドは、何もオプションを指定せずに実行すると、改行コード「CR + LF」と「LF のみ」の違いを無視するようです(テキストファイルの比較の場合)。つまり、改行コードだけが異なるテキストファイルを比較すると、同じであるとみなされます。

ところが、

1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567↓
というデータの最後("↓" の部分)を CR + LF にした A.TXT と、LF のみにした B.TXT を作って、

C:\> FC A.TXT B.TXT
とやると、なぜか「差異あり」となってしまいます(しかも、ファイルの内容が出力されません)。

L:\Tmp>fc A.TXT B.TXT
ファイル A.TXT と B.TXT を比較しています
***** A.TXT

***** B.TXT
*****


どうやら、改行を除く文字数が 127 のときだけ(?)、CR + LF と LF を区別するようなのです。63 文字とか 254 文字では発生しません。

おそらくバグだと思うのですが、Windows 2000 付属のものでも、XP 付属のものでも同じでした。

ちなみに、FC はデフォルトではタブをスペースに展開してから比較するようですが、内部的には、8タブ扱いのようです。

というのは、

→x

というファイル("→" はタブ)と

□□□□□□□□x

というファイル("□"は半角スペース)を比較すると「差異なし」ですが、

□□□□x

というファイルを比較すると「差異あり」になります。

このため、上記の改行の問題は、タブが含まれる行では、8タブ展開した結果が 127 文字になったときに発生します。



Windows DOS/コマンドプロンプト辞典
飯島 弘文
翔泳社 (2003/08/23)
売り上げランキング: 20120
おすすめ度の平均: 5.0
5 DOSを使う方、興味のある方には最良の書だと思います
5 Windowsでコマンドプロンプトを使う時に役に立ちました。
PR
Post your Comment
Name:
Title:
Mail:
URL:
Color:
Comment:
pass: emoji:Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Re: FC コマンドにバグ?
fcコマンドの挙動がおかしく思い、調べていたところ、こちらのページにヒットし、大変参考になりました。

ちなみに、原因は、内部的に128バイト単位で折り返しているためではないかと思います。
(/Nオプションで行番号を表示するとわかります。)
てんねん: 2008.01/11(Fri) 14:29 Edit
Re: FC コマンドにバグ?
てんねんさんこんにちは。
誰かの役に立つかと思って書いてよかったです。
醜態のブロガー: URL 2008.01/12(Sat) 00:02 Edit
trackback
この記事のトラックバックURL:
[13] [12] [11] [10] [9] [8
 HOME : Next »
カウンター
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
広告



最新トラックバック
最新コメント
[01/12 醜態のブロガー]
[01/11 てんねん]
[06/30 argv]
[06/29 八百屋のお七]
プロフィール
HN:
argv
性別:
非公開
バーコード
ブログ内検索
アクセス解析

醜態のブロガー wrote all articles.
Powered by Ninja.blog * TemplateDesign by TMP  

忍者ブログ[PR]