📄 string.c
字号:
{ (const char *)0, (const char *)0, 1, (const char *)0 }, { (const char *)0, (const char *)0, 7, (const char *)0 }, { (const char *)0, "", 0, (const char *)0 }, { (const char *)0, "", 1, (const char *)0 }, { (const char *)0, "", 7, (const char *)0 }, { (const char *)0, "stuff", 0, (const char *)0 }, { (const char *)0, "stuff", 1, (const char *)0 }, { (const char *)0, "stuff", 7, (const char *)0 }, { "", (const char *)0, 0, "" }, { "", (const char *)0, 1, "" }, { "", (const char *)0, 7, "" }, { "", "", 0, "" }, { "", "", 1, "" }, { "", "", 7, "" }, { "", "abcdefgh", 0, "" }, { "", "abcdefgh", 1, "" }, { "", "abcdefgh", 7, "abcdef" }, { "xyz", (const char *)0, 0, "xyz" }, { "xyz", (const char *)0, 1, "xyz" }, { "xyz", (const char *)0, 7, "xyz" }, { "xyz", "", 0, "xyz" }, { "xyz", "", 1, "xyz" }, { "xyz", "", 7, "xyz" }, { "xyz", "abcdefgh", 0, "xyz" }, { "xyz", "abcdefgh", 1, "xyz" }, { "xyz", "abcdefgh", 7, "xyzabc" } }; int i; printf("Test 010 (PL_strcatn) ..."); fflush(stdout); for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) { char buffer[ 1024 ]; int j; char *rv; for( j = 0; j < sizeof(buffer); j++ ) buffer[j] = '-'; if( (const char *)0 != array[i].first ) (void)PL_strcpy(buffer, array[i].first); rv = PL_strcatn(((const char *)0 == array[i].first) ? (char *)0 : buffer, array[i].length, array[i].second); if( (const char *)0 == array[i].result ) { if( (char *)0 != rv ) { printf("FAIL %d: %s+%s/%lu -> %.32s, not zero\n", i, array[i].first ? array[i].first : "(null)", array[i].second ? array[i].second : "(null)", array[i].length, rv); return PR_FALSE; } } else { if( (char *)0 == rv ) { printf("FAIL %d: %s+%s/%lu -> null, not %s\n", i, array[i].first ? array[i].first : "(null)", array[i].second ? array[i].second : "(null)", array[i].length, array[i].result); return PR_FALSE; } else { const char *a = array[i].result; const char *b = (const char *)rv; while( 1 ) { if( *a != *b ) { printf("FAIL %d: %s+%s/%lu -> %.32s, not %s\n", i, array[i].first ? array[i].first : "(null)", array[i].second ? array[i].second : "(null)", array[i].length, rv, array[i].result); return PR_FALSE; } if( (char)0 == *a ) break; a++; b++; } } } } printf("PASS\n"); return PR_TRUE;}/* PL_strcmp */PRBool test_011(void){ static struct { const char *one; const char *two; PRIntn sign; } array[] = { { (const char *)0, (const char *)0, 0 }, { (const char *)0, "word", -1 }, { "word", (const char *)0, 1 }, { "word", "word", 0 }, { "aZYXVUT", "bZYXVUT", -1 }, { "aZYXVUT", "bAAAAAA", -1 }, { "a", "aa", -1 }, { "a", "a", 0 }, { "a", "A", 1 }, { "aaaaa", "baaaa", -1 }, { "aaaaa", "abaaa", -1 }, { "aaaaa", "aabaa", -1 }, { "aaaaa", "aaaba", -1 }, { "aaaaa", "aaaab", -1 }, { "bZYXVUT", "aZYXVUT", 1 }, { "bAAAAAA", "aZYXVUT", 1 }, { "aa", "a", 1 }, { "A", "a", -1 }, { "baaaa", "aaaaa", 1 }, { "abaaa", "aaaaa", 1 }, { "aabaa", "aaaaa", 1 }, { "aaaba", "aaaaa", 1 }, { "aaaab", "aaaaa", 1 }, { "word", "Word", 1 }, { "word", "wOrd", 1 }, { "word", "woRd", 1 }, { "word", "worD", 1 }, { "WORD", "wORD", -1 }, { "WORD", "WoRD", -1 }, { "WORD", "WOrD", -1 }, { "WORD", "WORd", -1 } }; int i; printf("Test 011 (PL_strcmp) ..."); fflush(stdout); for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) { PRIntn rv = PL_strcmp(array[i].one, array[i].two); switch( array[i].sign ) { case -1: if( rv < 0 ) continue; break; case 1: if( rv > 0 ) continue; break; case 0: if( 0 == rv ) continue; break; default: PR_NOT_REACHED("static data inconsistancy"); break; } printf("FAIL %d: %s-%s -> %d, not %d\n", i, array[i].one ? array[i].one : "(null)", array[i].two ? array[i].two : "(null)", rv, array[i].sign); return PR_FALSE; } printf("PASS\n"); return PR_TRUE;}/* PL_strncmp */PRBool test_012(void){ static struct { const char *one; const char *two; PRUint32 max; PRIntn sign; } array[] = { { (const char *)0, (const char *)0, 0, 0 }, { (const char *)0, (const char *)0, 1, 0 }, { (const char *)0, (const char *)0, 4, 0 }, { (const char *)0, "word", 0, -1 }, { (const char *)0, "word", 1, -1 }, { (const char *)0, "word", 4, -1 }, { "word", (const char *)0, 0, 1 }, { "word", (const char *)0, 1, 1 }, { "word", (const char *)0, 4, 1 }, { "word", "word", 0, 0 }, { "word", "word", 1, 0 }, { "word", "word", 3, 0 }, { "word", "word", 5, 0 }, { "aZYXVUT", "bZYXVUT", 0, 0 }, { "aZYXVUT", "bZYXVUT", 1, -1 }, { "aZYXVUT", "bZYXVUT", 4, -1 }, { "aZYXVUT", "bZYXVUT", 9, -1 }, { "aZYXVUT", "bAAAAAA", 0, 0 }, { "aZYXVUT", "bAAAAAA", 1, -1 }, { "aZYXVUT", "bAAAAAA", 4, -1 }, { "aZYXVUT", "bAAAAAA", 5, -1 }, { "a", "aa", 0, 0 }, { "a", "aa", 1, 0 }, { "a", "aa", 4, -1 }, { "a", "a", 0, 0 }, { "a", "a", 1, 0 }, { "a", "a", 4, 0 }, { "a", "A", 0, 0 }, { "a", "A", 1, 1 }, { "a", "A", 4, 1 }, { "aaaaa", "baaaa", 0, 0 }, { "aaaaa", "baaaa", 1, -1 }, { "aaaaa", "baaaa", 4, -1 }, { "aaaaa", "abaaa", 0, 0 }, { "aaaaa", "abaaa", 1, 0 }, { "aaaaa", "abaaa", 4, -1 }, { "aaaaa", "aabaa", 0, 0 }, { "aaaaa", "aabaa", 1, 0 }, { "aaaaa", "aabaa", 4, -1 }, { "aaaaa", "aaaba", 0, 0 }, { "aaaaa", "aaaba", 1, 0 }, { "aaaaa", "aaaba", 4, -1 }, { "aaaaa", "aaaab", 0, 0 }, { "aaaaa", "aaaab", 1, 0 }, { "aaaaa", "aaaab", 4, 0 }, { "bZYXVUT", "aZYXVUT", 0, 0 }, { "bZYXVUT", "aZYXVUT", 1, 1 }, { "bZYXVUT", "aZYXVUT", 4, 1 }, { "bAAAAAA", "aZYXVUT", 0, 0 }, { "bAAAAAA", "aZYXVUT", 1, 1 }, { "bAAAAAA", "aZYXVUT", 4, 1 }, { "aa", "a", 0, 0 }, { "aa", "a", 1, 0 }, { "aa", "a", 4, 1 }, { "A", "a", 0, 0 }, { "A", "a", 1, -1 }, { "A", "a", 4, -1 }, { "baaaa", "aaaaa", 0, 0 }, { "baaaa", "aaaaa", 1, 1 }, { "baaaa", "aaaaa", 4, 1 }, { "abaaa", "aaaaa", 0, 0 }, { "abaaa", "aaaaa", 1, 0 }, { "abaaa", "aaaaa", 4, 1 }, { "aabaa", "aaaaa", 0, 0 }, { "aabaa", "aaaaa", 1, 0 }, { "aabaa", "aaaaa", 4, 1 }, { "aaaba", "aaaaa", 0, 0 }, { "aaaba", "aaaaa", 1, 0 }, { "aaaba", "aaaaa", 4, 1 }, { "aaaab", "aaaaa", 0, 0 }, { "aaaab", "aaaaa", 1, 0 }, { "aaaab", "aaaaa", 4, 0 }, { "word", "Word", 0, 0 }, { "word", "Word", 1, 1 }, { "word", "Word", 3, 1 }, { "word", "wOrd", 0, 0 }, { "word", "wOrd", 1, 0 }, { "word", "wOrd", 3, 1 }, { "word", "woRd", 0, 0 }, { "word", "woRd", 1, 0 }, { "word", "woRd", 3, 1 }, { "word", "worD", 0, 0 }, { "word", "worD", 1, 0 }, { "word", "worD", 3, 0 }, { "WORD", "wORD", 0, 0 }, { "WORD", "wORD", 1, -1 }, { "WORD", "wORD", 3, -1 }, { "WORD", "WoRD", 0, 0 }, { "WORD", "WoRD", 1, 0 }, { "WORD", "WoRD", 3, -1 }, { "WORD", "WOrD", 0, 0 }, { "WORD", "WOrD", 1, 0 }, { "WORD", "WOrD", 3, -1 }, { "WORD", "WORd", 0, 0 }, { "WORD", "WORd", 1, 0 }, { "WORD", "WORd", 3, 0 } }; int i; printf("Test 012 (PL_strncmp) ..."); fflush(stdout); for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) { PRIntn rv = PL_strncmp(array[i].one, array[i].two, array[i].max); switch( array[i].sign ) { case -1: if( rv < 0 ) continue; break; case 1: if( rv > 0 ) continue; break; case 0: if( 0 == rv ) continue; break; default: PR_NOT_REACHED("static data inconsistancy"); break; } printf("FAIL %d: %s-%s/%ld -> %d, not %d\n", i, array[i].one ? array[i].one : "(null)", array[i].two ? array[i].two : "(null)", array[i].max, rv, array[i].sign); return PR_FALSE; } printf("PASS\n"); return PR_TRUE;}/* PL_strcasecmp */PRBool test_013(void){ static struct { const char *one; const char *two; PRIntn sign; } array[] = { { (const char *)0, (const char *)0, 0 }, { (const char *)0, "word", -1 }, { "word", (const char *)0, 1 }, { "word", "word", 0 }, { "aZYXVUT", "bZYXVUT", -1 }, { "aZYXVUT", "bAAAAAA", -1 }, { "a", "aa", -1 }, { "a", "a", 0 }, { "a", "A", 0 }, { "aaaaa", "baaaa", -1 }, { "aaaaa", "abaaa", -1 }, { "aaaaa", "aabaa", -1 }, { "aaaaa", "aaaba", -1 }, { "aaaaa", "aaaab", -1 }, { "bZYXVUT", "aZYXVUT", 1 }, { "bAAAAAA", "aZYXVUT", 1 }, { "aa", "a", 1 }, { "A", "a", 0 }, { "baaaa", "aaaaa", 1 }, { "abaaa", "aaaaa", 1 }, { "aabaa", "aaaaa", 1 }, { "aaaba", "aaaaa", 1 }, { "aaaab", "aaaaa", 1 }, { "word", "Word", 0 }, { "word", "wOrd", 0 }, { "word", "woRd", 0 }, { "word", "worD", 0 }, { "WORD", "wORD", 0 }, { "WORD", "WoRD", 0 }, { "WORD", "WOrD", 0 }, { "WORD", "WORd", 0 } }; int i; printf("Test 013 (PL_strcasecmp) ..."); fflush(stdout); for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) { PRIntn rv = PL_strcasecmp(array[i].one, array[i].two); switch( array[i].sign ) { case -1: if( rv < 0 ) continue; break; case 1: if( rv > 0 ) continue; break; case 0: if( 0 == rv ) continue; break; default: PR_NOT_REACHED("static data inconsistancy"); break; } printf("FAIL %d: %s-%s -> %d, not %d\n", i, array[i].one ? array[i].one : "(null)", array[i].two ? array[i].two : "(null)", rv, array[i].sign); return PR_FALSE; } printf("PASS\n"); return PR_TRUE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -