開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- プログラミング言語: C
- Clang (コンパイラ)
プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)の第5章(ポインタと配列)、5.3(ポインタと配列)、5.4(アドレス計算)、5.5(文字ポインタと関数)、演習5-4を解いてみる。
その他参考書籍
- プログラミング言語Cアンサー・ブック 第2版 (クロビス・L.トンド、スコット・E.ギンペル(著)、矢吹 道郎(翻訳))
演習 5-4.
コード
sample.c
#include <stdio.h> #define MAXSIZE 1000 int main() { int strend(char *, char *); char s1[MAXSIZE] = "program"; char s2[MAXSIZE] = "programming"; char s3[MAXSIZE] = "programmer"; char s4[MAXSIZE] = "ing"; char s5[MAXSIZE] = "er"; char s6[MAXSIZE] = "python programmer"; char s7[MAXSIZE] = ""; printf("%s %s %d\n", s1, s4, strend(s1, s4)); printf("%s %s %d\n", s1, s5, strend(s1, s5)); printf("%s %s %d\n", s2, s4, strend(s2, s4)); printf("%s %s %d\n", s2, s5, strend(s2, s5)); printf("%s %s %d\n", s3, s4, strend(s3, s4)); printf("%s %s %d\n", s3, s5, strend(s3, s5)); printf("'%s' '%s' %d\n", s3, s6, strend(s3, s6)); printf("%s %s %d\n", s1, s1, strend(s1, s1)); printf("'%s' '%s' %d\n", s7, s7, strend(s7, s7)); printf("'%s' '%s' %d\n", s1, s7, strend(s1, s7)); printf("'%s' '%s' %d\n", s7, s1, strend(s7, s1)); return 0; } int strend(char *s, char *t) { char *u; char *v; u = s; v = t; while (*s != '\0') { s++; } while (*t != '\0') { t++; } while (*s == *t && s >= u && t >= v) { if (t == v) { return 1; } s--; t--; } return 0; }
入出力結果(Terminal)
$ ./a.out program ing 0 program er 0 programming ing 1 programming er 0 programmer ing 0 programmer er 1 'programmer' 'python programmer' 0 program program 1 '' '' 1 'program' '' 1 '' 'program' 0 $
0 コメント:
コメントを投稿