/* 自作文字列操作関数のテストプログラム */ #include #include #define LENGTH 20 /* mystrncat: t を s の終わりに連結する;s は十分大きいこと */ void mystrncat(char *s, char *t, int n) { /* n を考慮しない版 */ int i, j; i = j = 0; while( s[i] != '\0') /* s の終わりを探す */ i++; while( (s[i++] = t[j++]) != '\0') /* t をコピーする */ ; } main() { char msg1[LENGTH] = ""; char msg2[LENGTH] = ""; int i; for( i = 0; i < LENGTH; i++ ) msg1[i] = msg2[i] = '_'; msg1[0] = msg2[0] = '\0'; printf("\"\", 10\n"); strncat( msg1, "", 10 ); mystrncat( msg2, "", 10 ); printf("msg1:[%s], msg2:[%s]\n", msg1, msg2 ); printf("\"ABC\", 10\n"); strncat( msg1, "ABC", 10 ); mystrncat( msg2, "ABC", 10 ); printf("msg1:[%s], msg2:[%s]\n", msg1, msg2 ); printf("\"abcd\", 0\n"); strncat( msg1, "abcd", 0 ); mystrncat( msg2, "abcd", 0 ); printf("msg1:[%s], msg2:[%s]\n", msg1, msg2 ); printf("\"12345\", 4\n"); strncat( msg1, "12345", 4 ); mystrncat( msg2, "12345", 4 ); printf("msg1:[%s], msg2:[%s]\n", msg1, msg2 ); printf("\"+-\", 2\n"); strncat( msg1, "+-", 2 ); mystrncat( msg2, "+-", 2 ); printf("msg1:[%s], msg2:[%s]\n", msg1, msg2 ); printf("\"12345678901234567890\", 5\n"); strncat( msg1, "12345678901234567890", 5 ); mystrncat( msg2, "12345678901234567890", 5 ); printf("msg1:[%s], msg2:[%s]\n", msg1, msg2 ); } /* end of testmystrncat.c */