I am facing weird behaviour after apply sprintf: list[0] seems just gone away and result of strlen is 0. Then I try to apply strcpy, strlen meets expectation and returns 3. So my question is why sprintf will erase my list[0], how do I recover value of list[0] if I insist to apply sprintf? thanks in advance.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char list[5][7] = { "One", "Two", "Three", "Four", "Five" };
char item[7];
int i = 0;
for (i = 0; i < 5; i++) {
sprintf(item, "%-7s", list[i]);
//strcpy(item, list[i]);
}
printf("%d", strlen(list[0]));
}
snprintf, which guards against overflow at the risk of truncating the output.)