sprintf関数は、引数で指定した値を書式に従い、文字列に編集(変換)します。

この関数はprintf関数やfprintf関数と似ていますが、ファイルに出力するのではなく、指定された領域に出力する点が異なります。

#include <stdio.h>
int sprintf(char *str, const char *format, …);

*strは編集した結果を格納するための領域を指定します。
*format(書式)は第3引数以降で指定する値の編集形式を指定します。
第3引数以降は可変引数で、任意の引数を指定できます。ただし、*formatにより、間接的に引数の型名と個数を指定することになります。

戻り値として、正常に出力できた場合は出力した文字数が、エラーの場合は負の値を返します。

*format(書式)はprintf関数やfprintf関数と同じですので、fprintf関数をご覧ください。

プログラム 例

#include <stdio.h>

int main(void)
{
  char   *StrAdd(int, int);
  int    atai1;
  int    atai2;

  printf('2つの整数を入力してください ==> ');
  scanf('%d%d', &atai1, &atai2);

  printf('%s\n', StrAdd(atai1, atai2));

  return 0;
}

/* 加算関数 */
char *StrAdd(int atai1, int atai2)
{
  static char    buff[100];

  sprintf(buff, '%d + %d = %d', atai1, atai2, atai1 + atai2);

  return buff;
}

例の実行結果

$ ./sprintf.exe
2つの整数を入力してください ==> 10 20
10 + 20 = 30
$
$ ./sprintf.exe
2つの整数を入力してください ==> 20 10
20 + 10 = 30
$
$ ./sprintf.exe
2つの整数を入力してください ==> -10 10
-10 + 10 = 0
$