R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

番兵

http://gushwell.ldblog.jp/archives/51976765.html
番兵というテクニック(窓際プログラマーの独り言 -C#の話題を中心に)

確かに

番兵


って、あんまり聞かなくなりましたねぇ。

C で文字列の末尾に null 文字を入れるのは、比較的有名な番兵処理ですよね。

投稿日時 : 2010年2月22日 14:40

Feedback

# re: 番兵 2010/02/22 15:06 aetos

Cの文字列を番兵と呼ぶのには違和感がある。

# re: 番兵 2010/02/22 15:18 囚人

>Cの文字列を番兵と呼ぶのには違和感がある。

同じく。
アレを番兵と呼ぶのは初めて聞きましたが、番兵と言えば番兵ですね。

# re: 番兵 2010/02/22 15:52 774RR

同じく。
if の判定条件が1つ減るのが番兵だと思うぞ

# re: 番兵 2010/02/22 16:02 R・田中一郎

あれ、違和感ありますかね?
僕は、真っ先に思い浮かぶんですけどねぇ。

# re: 番兵 2010/02/22 16:30 774RR

例えば、検索の際に使う番兵とは
・終端に達したか
・見つかったか
でループを終了する(=ループ内の比較が2種類必要)ところを、

ループの前に終端位置(の1つ先)に一致データをおき、ループ内の比較は
・見つかったか
だけにする(=ループ内比較が1個で済むので速い)
ループ後に終端位置(の1つ先)の一致データであったなら見つからなかったと判断
だと俺は思うわけで(大学の授業でもそう習ったし)

・バッファのサイズに達するか
・文字列の最後を見つけるか
ループ内でこの2個の比較を行ってしまうのであれば番兵にならん、のだと思う。

バッファ末端位置に \0 をおき \0 までを・・・なら番兵。

# re: 番兵 2010/02/22 18:18 なちゃ

そそ、ループ終了のためだけの判定を省けるのが番兵ですね。
だからこそ番兵なわけで。

# re: 番兵 2010/02/22 18:46 みきぬ

\0 が槍を持った人の姿に見えれば、それが番兵です。

# re: 番兵 2010/02/22 19:00 aetos

俺にはお金を持った人の姿に見えます。

# re: 番兵 2010/02/23 14:39 R・田中一郎

文字列を処理する場合も、\0 になるまで char 型の配列をループで処理しませんか?

# re: 番兵 2010/02/23 14:51 R・田中一郎

ああ、なるほど。
文字列の終端として\0を置いているという見方なら、確かに違和感がありますね。

# frWQhUVZIEuMXuh 2011/12/22 22:02 http://www.discreetpharmacist.com/ita/index.asp

Thanks for the article! I hope the author does not mind if I use it for my course work!...

# yNmEDiHiYbLOQLna 2012/01/04 5:39 http://www.kosherbeefjerky.com/

UEUtRQ Well, actually, a lot of what you write is not quite true !... well, okay, it does not matter:D

タイトル
名前
Url
コメント