我想把一个字符串,比如“00-00-ca-fe-ba-be”转换成无符号char ch[6]数组。我试过使用sscanf,但不管是什么原因,它都会在变量macaddress之后由于堆栈损坏而崩溃。
我猜有一些格式说明符,但我似乎不能把它弄对。

#include <string.h>
#include <stdio.h>

char string1[] = "00-00-CA-FE-BA-BE";
char seps[]   = "-";
char *token1 = NULL;
char *next_token1 = NULL;

int main( void )
{
    unsigned char macAddress[6];
    unsigned char ch;
    int idx=0;
    printf( "Tokens:\n" );

    // Establish string and get the first token:
    token1 = strtok_s( string1, seps, &next_token1);

    while ((token1 != NULL))
    {
        sscanf_s(token1, "%02X", &macAddress[idx++], 1);
        printf(" idx %d : %x\n", idx, macAddress[idx-1]);
        token1 = strtok_s( NULL, seps, &next_token1);
    }
}

如果有人能找到问题或提出替代方案,我会很高兴的。

最佳答案

%x格式说明符用于整数,而不是字符。您需要将整型变量的地址传递给sscanf_s,然后将其值赋给字符。

08-06 12:34