⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_yc_chkarray.c

📁 一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面
💻 C
📖 第 1 页 / 共 2 页
字号:
                       (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 + -