演習5-4 K&R プログラミング言語C
2010年02月06日
演習5-4
t
のポインタを文字列終端に移動させる際に、条件節で i
をインクリメントしているのは、終端に到達した際にもインクリメントするため。
これは、文字列の比較が終端文字から始まるため。
文字列 t
が文字列 s
の終わりに存在すれば i
は 0
までデクリメントされる。
#include <stdio.h> int strend(char*, char*); int main(void) { char *s = "hello, world"; char *t1 = "world"; char *t2 = "sorld"; printf("strend(\"%s\", \"%s\"); => %d\n", s, t1, strend(s, t1)); printf("strend(\"%s\", \"%s\"); => %d\n", s, t2, strend(s, t2)); return 0; } int strend(char *s, char *t) { int i = 0; /* ポインタを各文字列終端'\0'へ移動させる */ while (*s) s++; while (++i && *t) t++; /* 後方から前方に向けて、文字を比較する */ while (*s-- == *t-- && i >= 0) i--; return i == 0; }
実行結果
$ ./ex5-4 strend("hello, world", "world"); => 1 strend("hello, world", "sorld"); => 0
プログラミング言語C 第2版 ANSI規格準拠
posted with amazlet at 09.11.27
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
共立出版
売り上げランキング: 9726