開発環境
- 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 コメント:
コメントを投稿