I am a newbie in C, and I want to do something like
uint8_t message[12];
message[0] = 0x00;
message[1] = 0x00;
message[2] = 0x00;
message[3] = 0x00;
message[4] = 0x00;
message[5] = 0x00;
message[6] = 0x00;
message[7] = 0x00;
message[8] = 0x00;
message[9] = 0x00;
message[10] = 0x00;
message[11] = 0x00;
sprintf(_smess,"AT$SS=%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
message[0], message[1], message[2], message[3],
message[4], message[5], message[6], message[7],
message[8], message[9], message[10], message[11]);
But I don't know how to declare the variable _smess, I've tried with char *_smess or uint8_t _smess[12] but I got an error anyway
if a declare char _smess[43]; then I got this error:
Multiple markers at this line
- incompatible implicit declaration of built-in function 'sprintf' [enabled by
default]
- implicit declaration of function 'sprintf' [-Wimplicit-function-declaration]
- each undeclared identifier is reported only once for each function it
appears in
- '_smess' undeclared (first use in this function)
uint8_t message[12] = { 0 };you don't need the following 12 lines that initialize each array element.char _smess[43];as answered below - it needs anulterminator.implicit declaration of function 'sprintf'means that you haven't included the correct header. (#include <stdio.h>)50, I just did some optimization to make the answer more concise.sprintf()with aNULLpointer passed beforehand, and allocate the buffer after that (may be using VLA Compiler extension).