将char指针转换为unsigned char数组

use*_*522 7 c

我想将一个char指针转换为unsigned char var,我想我只能通过强制转换来实现,但它不起作用:

char * pch2;
//Code that puts something in pc2
part1 = (unsigned char) pch2;
Run Code Online (Sandbox Code Playgroud)

我有这个代码:

result.part1 = (unsigned char *) pch2;
printf("STRUCT %s\n",result.part1);
Run Code Online (Sandbox Code Playgroud)

result只是一个带有unsigned char数组的结构.

编辑:

            pch2 = strtok( ip, "." );

            while( pch2 != NULL ){
                printf( "x %d x: %s\n", i, pch2 );
                pch2[size-1] = '\0';

                if(i == 1)
                    result.part1 = (unsigned char *) pch2;
                if(i == 2)
                    result.part2 = (unsigned char *) pch2;
                if(i == 3)
                    result.part3 = (unsigned char *) pch2;
                if(i == 4)
                    result.part4 = (unsigned char *) pch2;
                i++;
                pch2 = strtok (NULL,".");
            }   
            printf("STRUCT %c\n",result.part1);
Run Code Online (Sandbox Code Playgroud)

结构:

typedef struct
{
    unsigned char part1;
    unsigned char part2;
    unsigned char part3;
    unsigned char part4;
} res;
Run Code Online (Sandbox Code Playgroud)

iab*_*der 3

你投射到unsigned char不是unsigned char*你忘记了*

part1 = (unsigned char*) pch2;
Run Code Online (Sandbox Code Playgroud)

如果pch2不是 null 终止,程序将崩溃,如果幸运的话,当您使用 时strlen,因此您需要在打印之前先使用 null 终止它pch2,请尝试以下操作:

pch2[size-1] = '\0';  /* note single quote */
result.part1 = (unsigned char *) pch2;
Run Code Online (Sandbox Code Playgroud)

更新:像这样定义你的结构:

typedef struct
{
    const char *part1;
    const char *part2
    const char *part3;
    const char *part4;
} res;
Run Code Online (Sandbox Code Playgroud)

并分配给它而不进行强制转换:

result.part1 = pch2;
Run Code Online (Sandbox Code Playgroud)