我尝试编写C应用程序,并使用跟随代码,读取16个字符的输入参数
int main(int argc, char *argv[])
{
unsigned char input[16];
if (argc != 2) {
fprintf(stderr,
"Usage: %s <input> \n",argv[0]);
return EXIT_FAILURE;
}
strncpy((char *)input, argv[1], 16);
return 0;
}
输入参数字符如:&#34; 5f52433120d32104&#34; (./myApplication 5f52433120d32104)
我想将输入字符作为字节并将其放入数组(5f,52,43等...),例如:
unsigned char* myByteArray;
由于
答案 0 :(得分:0)
您可以使用sscanf
在循环中扫描命令行参数。给定名为inputstr
的变量的示例包含您的字符串参数:
char* inputstr = argv[1];
unsigned char myByteArray[ELEMENT_NO]; /*ELEMENT_NO is the number of elements to scan*/
for(int i = 0; i < ELEMENT_NO; ++i)
{
unsigned int value; /*The value to store the read value in*/
sscanf(inputstr, "%2x", &value); /*Read 2 hexadecimal digits into value*/
myByteArray[i] = value; /*Store the new value*/
inpustr += 2; /*Increase 2 characters*/
}
这种方式myByteArray
将包含以十六进制格式读入unsigned char
数组的输入字符串。
如果您使用的是兼容C99的编译器,则可以使用"%2hhx"
格式说明符直接将您的输入读入unsigned char
,而不是使用中间unsigned int
。