snprintf 〜自由な形で文字列を作成する〜


目次に戻る


久しぶりにAnsiCの関数を紹介します。ただし、Ansiと言ってもこないだ採択さえれた新し い規格の方で取り入れられた物なので、古いコンパイラを使っている場合には実装され ていません。
 
以前、printfの出力結果を文字列に代入するとても便利な関数 sprintf を紹介しまし たが、sprintfは出力先の文字列より大きな結果を返してしまう場合のシステムに異常をも たらす危険性がありました。今日紹介する snprintf はそ出力先文字バッファの長さを指定することでメモリ外への書き込みを無くし ました。
 
/* sprintfの例 */
/* #include <stdio.h> */
 
char buff[30];
snprintf(buff,sizeof(buff),"%s = %d","buffのサイズ" , sizeof(buff));
 
printf(buff);


目次に戻る