📄 test_yc_chkarray.c
字号:
(ylib_fp_copy_t)ncstr_init_copy, (ylib_fp_copy_t)ncstr_assign_copy,
(ylib_fp_move_t)ncstr_init_move, (ylib_fp_move_t)ncstr_assign_move,
DestroyString, pool_alloc, pool_free );
printf( "please input insert index:\n" );
scanf( "%u", &index );
printf( "\n\nplease input insert strings:\n" );
GetStrings( &strarr1, &dstr );
printf( "please input insert count:\n" );
scanf( "%u", &count );
if( false == chkarr_insert_array(&deq, index, strarr1.m_start, count) )
printf( "return false!\n" );
else
print_chkarray( &deq );
dyrscarr_destroy( &strarr1 );
break;
}
case 9:
{
chkarr_pop_back( &deq );
break;
}
case 10:
{
chkarr_pop_front( &deq );
break;
}
case 11:
{
InputStrings( &deq, &dstr, false );
print_chkarray( &deq );
break;
}
case 12:
{
InputStrings( &deq, &dstr, true );
print_chkarray( &deq );
break;
}
case 13:
{
size_t len = 0;
printf( "please input a string:\n" );
getchar();
ncstr_getline( &dstr, '\n' );
printf( "please input new length:\n" );
scanf( "%u", &len );
if( false == chkarr_resize(&deq, len, &dstr) )
printf( "return false!" );
else
print_chkarray( &deq );
break;
}
case 14:
{
size_t index = 0, old_count = 0, new_count = 0;
printf( "please input replace index:\n" );
scanf( "%u", &index );
printf( "please input replace string:\n" );
getchar();
ncstr_getline( &dstr, '\n' );
printf( "please input replace old_count:\n" );
scanf( "%u", &old_count );
printf( "please input replace new_count:\n" );
scanf( "%u", &new_count );
if( false == chkarr_replace_fill( &deq, index, old_count,
&dstr, new_count ) )
printf( "return false!\n" );
else
print_chkarray( &deq );
break;
}
case 15:
{
size_t index = 0, old_count = 0, new_count = 0;
dyrscarray strarr1;
dyrscarr_init( &strarr1, sizeof(ncstring), (ylib_fp_oper_t)ncstr_init,
(ylib_fp_copy_t)ncstr_init_copy, (ylib_fp_copy_t)ncstr_assign_copy,
(ylib_fp_move_t)ncstr_init_move, (ylib_fp_move_t)ncstr_assign_move,
DestroyString, pool_alloc, pool_free );
printf( "please input replace index:\n" );
scanf( "%u", &index );
printf( "\n\nplease input replace strings:\n" );
GetStrings( &strarr1, &dstr );
printf( "please input replace old_count:\n" );
scanf( "%u", &old_count );
printf( "please input replace new_count:\n" );
scanf( "%u", &new_count );
if( false == chkarr_replace_array( &deq, index, old_count,
strarr1.m_start, new_count ) )
printf( "return false!\n" );
else
print_chkarray( &deq );
dyrscarr_destroy( &strarr1 );
break;
}
case 16:
{
printf( "chkarray %s\n", chkarr_empty(&deq) ? "is empty!" : "isn't empty!" );
break;
}
case 17:
{
printf( "size of chkarray: %u\n", chkarr_size(&deq) );
break;
}
case 18:
{
printf( "max size of chkarray: %u\n", chkarr_max_size() );
break;
}
case 19:
{
chkarr_iterator begin = chkarr_begin( &deq );
printf( "begin.current = %p\n", begin.current );
printf( "begin.first = %p\n", begin.first );
printf( "begin.last = %p\n", begin.last );
printf( "begin.map = %p\n", begin.map );
printf( "begin.element_size = %u\n", begin.element_size );
printf( "begin.chunk_size = %u\n", begin.chunk_size );
break;
}
case 20:
{
chkarr_iterator end = chkarr_end( &deq );
printf( "end.current = %p\n", end.current );
printf( "end.first = %p\n", end.first );
printf( "end.last = %p\n", end.last );
printf( "end.map = %p\n", end.map );
printf( "end.element_size = %u\n", end.element_size );
printf( "end.chunk_size = %u\n", end.chunk_size );
break;
}
case 21:
{
printf( "front of chkarray: %s\n",
ncstr_to_string( (ncstring*)chkarr_front(&deq) ) );
break;
}
case 22:
{
printf( "back of chkarray: %s\n",
ncstr_to_string( (ncstring*)chkarr_back(&deq) ) );
break;
}
case 23:
{
size_t index = 0;
ncstring* str;
printf( "please input index:\n" );
scanf( "%u", &index );
str = (ncstring*)chkarr_index( &deq, index );
printf( "string chkarray[%u]: %s\n", index, ncstr_to_string(str) );
break;
}
case 24:
{
size_t index = 0;
ncstring* str;
printf( "please input index:\n" );
scanf( "%u", &index );
str = (ncstring*)chkarr_at( &deq, index );
if( str )
printf( "string chkarray[%u]: %s\n", index, ncstr_to_string(str) );
else
printf( "out of range!\n" );
break;
}
case 25:
{
chkarr_reverse( &deq );
break;
}
case 26:
{
printf( "chunk elements: %u\n", chkarr_chunk_elements(&deq) );
break;
}
case 27:
{
size_t i, chunks = 0, elmts = chkarr_chunk_elements(&deq);
ncstring *begin, *end;
ncstring** chk = (ncstring**)( deq.m_chunk_array );
for( i = 0; i < deq.m_array_len; ++i )
{
if( chk[i] )
{
++chunks;
begin = chk[i] == deq.m_start.first
? (ncstring*)(deq.m_start.current) : chk[i];
end = chk[i] == deq.m_finish.first
? (ncstring*)(deq.m_finish.current) : chk[i] + elmts;
printf( "chkarray[%u]: ", i );
for( ; begin != end; ++begin )
printf( "%s, ", ncstr_to_string(begin) );
putchar( '\n' );
}
}
printf( "\nallocate chunks = %u\n", chunks );
break;
}
case 28:
{
print_chkarray( &deq );
break;
}
default:
break;
}
printf( "\npress any key to continue\n" );
getchar();
getchar();
}
EXIT:
printf( "destroy chkarray:\n" );
chkarr_destroy( &deq );
ncstr_destroy( &dstr );
printf( "\n\n\n" );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -