snprintf
int snprintf ( char * s, size_t n, const char * format, ... );
该函数的返回值仅可用于判断函数是否执行成功,其大小不能代表s
的大小
可以分情况讨论
- s < format的长度时
- n <= s的长度时:format能够截断至n-1的长度进行拷贝到s并添加结束符\0; 返回值却为format的长度。strlen(s)为n-1;sizeof(s)为s的本身字节数(sizeof所有情况都一样)
- n > s的长度时:format可能截断也可能完整拷贝到s;返回值依旧为format的长度。strlen(s)大小不定;sizeof(s)为s的本身字节数(sizeof所有情况都一样)
- s >= format的长度时
- n <= format的长度时:format能够截断至n-1的长度进行拷贝到s并添加结束符\0; 返回值却为format的长度。strlen(s)为n-1;sizeof(s)为s的本身字节数(sizeof所有情况都一样)
- n > format的长度时:format完整拷贝到s;返回值依旧为format的长度。strlen(s)为format的大小;sizeof(s)为s的本身字节数(sizeof所有情况都一样)