sprintf()やsnprintf()は末尾のゼロも書く。戻り値(書いたバイト数)はゼロの分を含んだり含まなかったりする。
sprintfのとき
sprintf()の戻り値はゼロを含まない
len = sprintf(str,"hoge"); printf("%s:len=%d\n",str,len);
hoge:len=4
snprintfのとき(切り詰められない場合)
snprintf()でサイズ指定に余裕があるときの戻り値はゼロを含まない
len = snprintf(str,8,"fuga"); printf("%s:len=%d\n",str,len);
fuga:len=4
snprintfのとき(切り詰められた場合)
snprintf()で切り詰められたときの戻り値はゼロを含む
len = snprintf(str,8,"piyopiyo"); printf("%s:len=%d\n",str,len);
piyopiy:len=8