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

📄 test_yc_string.c

📁 一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面
💻 C
📖 第 1 页 / 共 2 页
字号:
#ifdef _MSC_VER
    #pragma warning(disable:4127)
    #pragma warning(disable:4244)
#endif

#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
    #include <wchar.h>
#endif

#include <float.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../../young/youngc.h"

#ifdef  __cplusplus
    using namespace youngc;
#endif

void test_string( void )
{
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
    char get[8] = {0};
#endif
    bool testwchar = false;
    long double ldmin = LDBL_MIN;
    long double ldmax = LDBL_MAX;
    ncstring str;
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
    wcstring wstr;
#endif

    printf( "\nsize of dystring = %u\n", sizeof(dystring) );
    printf( "STATIC_NCSTR_LEN = %u\n", STATIC_NCSTR_LEN );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
    printf( "STATIC_WCSTR_LEN = %u\n", STATIC_WCSTR_LEN );
#endif
    printf( "\n\n" );

    ncstr_init( &str );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
    wcstr_init( &wstr );
    printf( "test wide character(y/n)\n" );
    scanf( "%s", get );
    'y' == get[0] ? (testwchar = true) : (testwchar = false);
#endif

    while( 1 )
    {
        int choice = 0;

        printf( "\n\n" );
        printf( "  1: test string init_copy\n" );
        printf( "  2: test string assign_copy\n" );
        printf( "  3: test string init_move\n" );
        printf( "  4: test string assign_move\n" );
        printf( "  5: test string begin\n" );
        printf( "  6: test string end\n" );
        printf( "  7: test string index\n" );
        printf( "  8: test string at\n" );
        printf( "  9: test string max_size\n" );
        printf( " 10: test string size\n" );
        printf( " 11: test string capacity\n" );
        printf( " 12: test string space\n" );
        printf( " 13: test string pop_back\n" );
        printf( " 14: test string push_back\n" );
        printf( " 15: test string reserve\n" );
        printf( " 16: test string erase_pos\n" );
        printf( " 17: test string erase_range\n" );
        printf( " 18: test string insert_value\n" );
        printf( " 19: test string insert_array\n" );
        printf( " 20: test string resize\n" );
        printf( " 21: test string replace_fill\n" );
        printf( " 22: test string replace_array\n" );
        printf( " 23: test string getline\n" );
        printf( " 24: test string fgetline\n" );
        printf( " 25: test string format\n" );
        printf( " 26: test string to_string\n" );
        printf( " 27: test string put\n" );
        printf( "  0: exit\n\n\n" );

        scanf( "%d", &choice );

        switch( choice )
        {
            case 0 :
                goto EXIT;
            case 1:
                if( false == testwchar )
                {
                    ncstring str1;
                    if( 0 == ncstr_init_copy(&str1, &str) )
                        printf( "copy error!\n" );
                    else
                    {
                        printf( "src: %s\n", ncstr_to_string(&str) );
                        printf( "dst: %s\n", ncstr_to_string(&str1) );
                    }
                    ncstr_destroy( &str );
                    ncstr_init_copy( &str, &str1 );
                    ncstr_destroy( &str1 );
                }
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                {
                    wcstring wstr1;
                    if( 0 == wcstr_init_copy(&wstr1, &wstr) )
                        printf( "copy error!\n" );
                    else
                    {
                        wprintf( L"src: %ls\n", wcstr_to_wstring(&wstr) );
                        wprintf( L"dst: %ls\n", wcstr_to_wstring(&wstr1) );
                    }
                    wcstr_destroy( &wstr );
                    wcstr_init_copy( &wstr, &wstr1 );
                    wcstr_destroy( &wstr1 );
                }
#endif
                break;
            case 2:
                if( false == testwchar )
                {
                    ncstring str1;
                    ncstr_init( &str1 );
                    if( 0 == ncstr_assign_copy(&str1, &str) )
                        printf( "copy error!\n" );
                    else
                    {
                        printf( "src: %s\n", ncstr_to_string(&str) );
                        printf( "dst: %s\n", ncstr_to_string(&str1) );
                    }
                    ncstr_destroy( &str );
                    ncstr_assign_copy( &str, &str1 );
                    ncstr_destroy( &str1 );
                }
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                {
                    wcstring wstr1;
                    wcstr_init( &wstr1 );
                    if( 0 == wcstr_assign_copy(&wstr1, &wstr) )
                        printf( "copy error!\n" );
                    else
                    {
                        wprintf( L"src: %ls\n", wcstr_to_wstring(&wstr) );
                        wprintf( L"dst: %ls\n", wcstr_to_wstring(&wstr1) );
                    }
                    wcstr_destroy( &wstr );
                    wcstr_assign_copy( &wstr, &wstr1 );
                    wcstr_destroy( &wstr1 );
                }
#endif
                break;
            case 3:
                if( false == testwchar )
                {
                    ncstring str1;
                    ncstr_init_move( &str1, &str );
                    printf( "src: %s\n", ncstr_to_string(&str) );
                    printf( "dst: %s\n", ncstr_to_string(&str1) );
                    ncstr_destroy( &str1 );
                }
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                {
                    wcstring wstr1;
                    wcstr_init_move( &wstr1, &wstr );
                    wprintf( L"src: %ls\n", wcstr_to_wstring(&wstr) );
                    wprintf( L"dst: %ls\n", wcstr_to_wstring(&wstr1) );
                    wcstr_destroy( &wstr1 );
                }
#endif
                break;
            case 4:
                if( false == testwchar )
                {
                    ncstring str1;
                    ncstr_init( &str1 );
                    ncstr_assign_move( &str1, &str );
                    printf( "src: %s\n", ncstr_to_string(&str) );
                    printf( "dst: %s\n", ncstr_to_string(&str1) );
                    ncstr_destroy( &str1 );
                }
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                {
                    wcstring wstr1;
                    wcstr_init( &wstr1 );
                    wcstr_assign_move( &wstr1, &wstr );
                    wprintf( L"src: %ls\n", wcstr_to_wstring(&wstr) );
                    wprintf( L"dst: %ls\n", wcstr_to_wstring(&wstr1) );
                    wcstr_destroy( &wstr1 );
                }
#endif
                break;
            case 5:
                if( false == testwchar )
                    printf( "address of begin: %p\n", ncstr_begin(&str) );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                    wprintf( L"address of begin: %p\n", wcstr_begin(&wstr) );
#endif
                break;
            case 6:
                if( false == testwchar )
                    printf( "address of end: %p\n", ncstr_end(&str) );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                    wprintf( L"address of end: %p\n", wcstr_end(&wstr) );
#endif
                break;
            case 7:
            {
                size_t i = 0;
                printf( "please input index\n" );
                scanf( "%u", &i );
                if( false == testwchar )
                    printf( "str[%u]: %c\n", i, *ncstr_index(&str, i) );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                    wprintf( L"wstr[%u]: %lc\n", i, *wcstr_index(&wstr, i) );
#endif
                break;
            }
            case 8:
            {
                size_t i = 0;
                printf( "please input index\n" );
                scanf( "%u", &i );
                if( false == testwchar )
                {
                    char* c = ncstr_at( &str, i );
                    c ? printf( "str[%u]: %c\n", i, *c )
                      : printf( "out of range!\n" ) ;
                }
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                {
                    wchar_t* wc = wcstr_at( &wstr, i );
                    wc ? wprintf( L"wstr[%u]: %lc\n", i, *wc )
                       : wprintf( L"out of range!\n" );
                }
#endif
                break;
            }
            case 9:
                if( false == testwchar )
                    printf( "max size of string: %u\n", ncstr_max_size() );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                    printf( "max size of wstring: %u\n", wcstr_max_size() );
#endif
                break;
            case 10:
                if( false == testwchar )
                    printf( "size of string: %u\n", ncstr_size(&str) );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                    printf( "size of wstring: %u\n", wcstr_size(&wstr) );
#endif
                break;
            case 11:
                if( false == testwchar )
                    printf( "capacity of string: %u\n", ncstr_capacity(&str) );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                    printf( "capacity of wstring: %u\n", wcstr_capacity(&wstr) );
#endif
                break;
            case 12:
                if( false == testwchar )
                    printf( "space of string: %u\n", ncstr_space(&str) );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                    printf( "space of wstring: %u\n", wcstr_space(&wstr) );
#endif
                break;
            case 13:
                if( false == testwchar )
                    ncstr_pop_back( &str );
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                    wcstr_pop_back( &wstr );
#endif
                break;
            case 14:
                if( false == testwchar )
                {
                    char getc[8];
                    printf( "please input a character\n" );
                    scanf( "%s", getc );
                    ncstr_push_back( &str, getc[0] );
                }
#ifdef __MACRO_C_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
                else
                {
                    wchar_t getwc[8];
                    printf( "please input a wide character\n" );
                    wscanf( L"%ls", getwc );
                    wcstr_push_back( &wstr, getwc[0] );
                }
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -