Code:
#include <stdio.h>
int main ()
{
char data1[10];
Char data2[10];
int Ret1, Ret2;
Ret1 = sprintf (data1, "My name is Messi, I ' m%d Years old!",);;
printf ("%s\n", data1);
Ret2 = snprintf (data2, sizeof (DATA2), "My name is Messi, I ' m%d Years old!",);
printf ("%s\n", data2);
printf ("ret1=%d, ret2=%d\n", Ret1, Ret2);
return 0;
}
Run Result:
Conclusion:
1.
sprintf does not make a Cross-border judgment if the string to be written is greater than or equal to the length of the character array.
will be directly to the memory after the overwrite, extremely unsafe.
Snprintf takes into account the length of the character array, and if the length of the character array is n bytes, writes the maximum number of n-1 bytes, followed by the word "."
Does not operate across borders, which is why it is used as an alternate function for sprintf.
2.
Sprinf returns the length of the actual string being written .
snprintf returns the length of the string to be written .