У меня есть этот код:
int main(){
char buffer[1024];
char port = 1;
int length = 255;
char * record = "$TAG ,0 ,89 ,0, 1\n";
if(length < 0 || length > 255){
printf("Error - length out of range for an unsigned char.\n");
exit(1);
}
snprintf(buffer, 1024, "%c%c%s", port, (unsigned char) length, record);
int port_rc = buffer[0];
int length_rc = buffer[1];
printf("port_rc: %d\n",port_rc);
printf("length_rc: %d\n",length_rc);
return 0;
}
Вывод при запуске:
port_rc: 1
length_rc: -1
Я думаю, что мне здесь чего-то не хватает в терминах snprintf (), поскольку я не вижу значения 255 при чтении созданного им массива. Я предполагаю, что snprintf () продвигает переменную length до int или чего-то еще. Кто-нибудь знает, как мне этого добиться?
Спасибо.