XINU
sprintf.c
Go to the documentation of this file.
1 /* sprintf.c - sprintf */
2 
3 #include <stdarg.h>
4 
5 static int sprntf(int, int);
6 extern void _fdoprnt(char *, va_list, int (*func) (int, int), int);
7 
8 /*------------------------------------------------------------------------
9  * sprintf - Format arguments and place output in a string.
10  *------------------------------------------------------------------------
11  */
12 int sprintf(
13  char *str, /* output string */
14  char *fmt, /* format string */
15  ...
16  )
17 {
18  va_list ap;
19  char *s;
20 
21  s = str;
22  va_start(ap, fmt);
23  _fdoprnt(fmt, ap, sprntf, (int)&s);
24  va_end(ap);
25  *s++ = '\0';
26 
27  return ((int)str);
28 }
29 
30 /*------------------------------------------------------------------------
31  * sprntf - Routine called by _doprnt to handle each character.
32  *------------------------------------------------------------------------
33  */
34 static int sprntf(
35  int acpp,
36  int ac
37  )
38 {
39  char **cpp = (char **)acpp;
40  char c = (char)ac;
41 
42  return (*(*cpp)++ = c);
43 }
void _fdoprnt(char *, va_list, int(*func)(int, int), int)
Definition: fdoprnt.c:20
#define va_start(last, va)
va_list型を初期化し、可変長引数の使用を開始する。
Definition: stdarg.h:25
int sprintf(char *str, char *fmt,...)
Definition: sprintf.c:12
#define va_end(va)
可変長引数の処理を終了する。
Definition: stdarg.h:42
可変長引数を実現するための宣言およびマクロ
__builtin_va_list va_list
可変個の実引数を扱うための情報を保持するための型(__builtin_va_listはGCCに定義された型) ...
Definition: stdarg.h:7
static int sprntf(int, int)
Definition: sprintf.c:34