int sprintf(char *str, const char *format, ...)
通常用于C语言的格式化字符串
- #include
- #include
-
- int main(){
- char s[20] = {0};
- sprintf(s, "hello %s", "world");
- printf("%s\n", s);
- return 0;
- }
运行程序输出:
hello world
不过sprintf有一个陷阱,就是他不会检查str所指向的空间的大小,因此会有越界的风险:
- #include
- #include
-
- int main(){
- char s[10] = {0};
- sprintf(s, "hello %s", "world");
- printf("%s len is %d\n", s, strlen(s));
- return 0;
- }
运行程序输出:
hello world len is 11
可见sprintf对字符数组s的写操作实际上越界了。
对此,C语言提供了
int snprintf ( char * str, size_t size, cons