Hi i am having a problem with the sprintf function. i don't know what i am doing wrong. i created a function where i use sprintf to separate the digits of a decimal number, and the first time that i called the function it works fine. The second time the sprintf starts when the first time left, and so on. The variable looks something like this the first time: "0123" and the second time: "0123123" I don't know if i have to reset a pointer (or how to do it) so everytime i call the function it starts at the beginning of the array. the code looks something like that:
void send_code (void) { int n; if (oper_code < 1000){ n = sprintf (code_char, "%d", 0); } n += sprintf (code_char+n, "%d", oper_code); . . . } void main (void) { . . . while (1) { send_code(); } }
or direct:
if (oper_code < 1000){ code_char[0]='0'; code_char[1]=0x00; n = 1; }
Thank you all. You've helped a lot.
If your objective is just to left pad the value with zeroes in a field width of four you can get rid of n, p and the if test and use this instead: sprintf (code_char, "%04d", oper_code);