不可忽略的小問題

typedef struct tagStruct
{
    char wchar[4];
    char wchar2[5];
}TSTRUCT;

    TSTRUCT tstruct;
    strcpy(tstruct.wchar,"aaaaaaaa");
    strcpy(tstruct.wchar2,"bbbbbbbbbb");
    AnsiString str1 = tstruct.wchar;           //str1=aaaabbbbbbbbbb
    AnsiString str2 = tstruct.wchar2;         //str2=bbbbbbbbbb

wchar不是我想要的那個,What I want is “aaaa”;

wchar越界了,What I want is “bbbbb”;

正確的用法是給wchar和wchar2都擴大一個字節

typedef struct tagStruct
{
    char wchar[5];           //比要求的大了一個字節
    char wchar2[6];         //比要求的大了一個字節
}TSTRUCT;


    TSTRUCT tstruct;
    memset(&tstruct,0,sizeof(tstruct));        //一定要memset一下,否則也是錯的
    strncpy(tstruct.wchar,"aaaaaaaaa",sizeof(tstruct.wchar)-1);
    strncpy(tstruct.wchar2,"bbbbbbbbb",sizeof(tstruct.wchar2)-1);
    AnsiString str1 = tstruct.wchar;             //str1 = “aaaa“
    AnsiString str2 = tstruct.wchar2;           //str2 = “bbbbb”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章