文字列の分割には、strtokだとVisualStudioのコンパイラでエラーとなるので、strtok_sを使用します。
#include <stdio.h>
#include <string> //strtok関数用
#include <stdlib.h> //strtoul関数用
int main(void)
{
char ch1; // 変換後の取得値
char *p1, *p2; // char型ポインタワーク
//== 変換元の文字列 ==
char sHex[] = { "30 31 32 41 42 43 4A 4B 4C 50 51 52 Hoge" };
char *delim = ", ";//デリミタ(複数渡せる)ここではカンマと空白
char *ctx;
//== 変換処理(スペース区切りで分割した文字列の数値変換)==
p1 = strtok_s(sHex, delim, &ctx); // 1個目の部分文字列取得
while (p1 != NULL) {
ch1 = (0xffU & strtoul(p1, &p2, 16)); // 16進文字列と解釈してchar型数値に変換
if (p1 != p2) {
printf("\"%s\" ==> '%c'\n", p1, ch1); // 変換成功時の表示
}
else {
printf("\"%s\" ==> ** NG **\n", p1); // 変換失敗時の表示
}
p1 = strtok_s(NULL, delim, &ctx); // 2個目以降の部分文字列取得
}
return 0;
}