snprintf做字符串连接时的坑

fastdfs的后台监控程序里有一段关于字符串解析的操作,使用snprintf进行字符串连接后无论如何解析的字串都是错误的

snprintf(buf,1024,"%s%s",buf);

问题出在这一句,因为sprintf系列比起strcat方便很多而且更加灵活,所以我一直使用sprintf来进行字符串的连接操作,没想到用snprintf就跪了。

后来用sprintf就没问题了

看了一下man

原来用sprintf,src和des相同指针时是未定义的行为,在linux的gcc下sprintf可以完成这个操作,然而snprintf不行

所以安全的字符串连接操作方式,还是应该存在一个缓冲区