開発環境
- 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-5を解いてみる。
その他参考書籍
- プログラミング言語Cアンサー・ブック 第2版 (クロビス・L.トンド、スコット・E.ギンペル(著)、矢吹 道郎(翻訳))
演習 5-5.
コード
sample.c
#include >stdio.h> #define MAXSIZE 1000 void my_strncpy(char *, char *, int); void my_strncat(char *, char *, int); int my_strncmp(char *, char *, int); int main() { char s[MAXSIZE] = "python", s1[MAXSIZE], s2[MAXSIZE], s3[MAXSIZE], s4[MAXSIZE], t[MAXSIZE] = " programmer", t1[MAXSIZE] = "1234567890"; my_strncpy(s1, s, 0); my_strncpy(s2, s, 6); my_strncpy(s3, s, 5); my_strncpy(s4, s, 10); printf("%s\n", s); printf("%s\n", s1); printf("%s\n", s2); printf("%s\n", s3); printf("%s\n", s4); printf("**********\n"); my_strncat(s, " programmer", 0); printf("%s\n", s); my_strncat(s, t, 11); printf("%s\n", s); my_strncat(s, t1, 5); printf("%s\n", s); my_strncat(s, t1, 100); printf("%s\n", s); printf("**********\n"); printf("%s %s %d\n", t1, t1, my_strncmp(t1, t1, 0)); printf("%s %s %d\n", t1, t1, my_strncmp(t1, t1, 10)); printf("%s %s %d\n", s2, s3, my_strncmp(s2, s3, 5)); printf("%s %s %d\n", s2, s3, my_strncmp(s2, s3, 6)); printf("%s %s %d\n", s3, s2, my_strncmp(s3, s2, 5)); printf("%s %s %d\n", s3, s2, my_strncmp(s3, s2, 6)); return 0; } void my_strncpy(char *s, char *t, int n) { for (; *t != '\0' && n > 0; s++, t++, n--) { *s = *t; } *s = '\0'; } void my_strncat(char *s, char *t, int n) { while (*s != '\0') { s++; } for (; *t != '\0' && n > 0; s++, t++, n--) { *s = *t; } *s = '\0'; } int my_strncmp(char *s, char *t, int n) { for (; *s == *t; s++, t++) { if (*s == '\0' || --n >= 0) { return 0; } } return *s - *t; }
入出力結果(Terminal)
$ ./a.out python python pytho python ********** python python programmer python programmer12345 python programmer123451234567890 ********** 1234567890 1234567890 0 1234567890 1234567890 0 python pytho 0 python pytho 110 pytho python 0 pytho python -110 $
0 コメント:
コメントを投稿