socket snprintf()函数调用发生错误.

char str1[4096];
snprintf(str1, sizeof(str1), ":%s", sock_ntop((SA* )&cliaddr, clilen));
我的目的就是想把sock_ntop转换的cliaddr ipv4地址前面加个冒号,然后复制到str1中,使最后的格式为str1 = ":127.0.0.1"
但是,这个函数调用总是出错,错误代码如下:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a60a03 in _IO_vfprintf_internal (s=s@entry=0x7fffffffbb30, format=,
format@entry=0x401f18 ":%s", ap=ap@entry=0x7fffffffbc98) at vfprintf.c:1661
1661 vfprintf.c: No such file or directory.
整个程序代码好多,我就不贴了.

sock_ntop((SA* )&cliaddr, clilen)
应该是它调用出错了吧。先看它的返回值