Ruby 3.4.5p51 (2025-07-16 revision 20cda200d3ce092571d0b5d342dadca69636cb0f)
|
Our own private printf(3). More...
#include "ruby/internal/attr/format.h"
#include "ruby/internal/attr/nonnull.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
Go to the source code of this file.
Functions | |
VALUE | rb_f_sprintf (int argc, const VALUE *argv) |
Identical to rb_str_format(), except how the arguments are arranged. | |
VALUE | rb_sprintf (const char *fmt,...) |
Ruby's extended sprintf(3). | |
VALUE | rb_vsprintf (const char *fmt, va_list ap) |
Identical to rb_sprintf(), except it takes a va_list. | |
VALUE | rb_str_catf (VALUE dst, const char *fmt,...) |
Identical to rb_sprintf(), except it renders the output to the specified object rather than creating a new one. | |
VALUE | rb_str_vcatf (VALUE dst, const char *fmt, va_list ap) |
Identical to rb_str_catf(), except it takes a va_list. | |
VALUE | rb_str_format (int argc, const VALUE *argv, VALUE fmt) |
Formats a string. |
Our own private printf(3).
Definition in file sprintf.h.
Identical to rb_str_format(), except how the arguments are arranged.
[in] | argc | Number of objects of argv. |
[in] | argv | A format string, followed by its arguments. |
Definition at line 209 of file sprintf.c.
Referenced by rb_f_sprintf(), and rb_io_printf().
VALUE rb_sprintf | ( | const char * | fmt, |
... ) |
Ruby's extended sprintf(3).
We ended up reinventing the entire printf business because we don't want to depend on locales. OS-provided printf routines might or might not, which caused instabilities of the result strings.
The format sequence is a mixture of format specifiers and other verbatim contents. Each format specifier starts with a %, and has the following structure:
This function supports flags of , #, +, -, 0, width of non-negative decimal integer and *, precision of non-negative decimal integers and *, length of L, h, t, z, l, ll, q, conversions of A, D, E, G, O, U, X, a, c, d, e, f, g, i, n, o, p, s, u, x, and %. In case of _WIN32 it also supports I. And additionally, it supports magical PRIsVALUE macro that can stringise arbitrary Ruby objects:
[in] | fmt | A printf-like format specifier. |
[in] | ... | Variadic number of contents to format. |
Identical to rb_sprintf(), except it renders the output to the specified object rather than creating a new one.
[out] | dst | String to modify. |
[in] | fmt | A printf-like format specifier. |
[in] | ... | Variadic number of contents to format. |
rb_eTypeError | `dst` is not a String. |
Formats a string.
Returns the string resulting from applying fmt to argv. The format sequence is a mixture of format specifiers and other verbatim contents. Each format specifier starts with a %, and has the following structure:
... which is different from that of rb_sprintf(). Because ruby has no short or long, there is no way to specify a "length" of an argument.
This function supports flags of , #, +, -, <>, {}, with of non-negative decimal integer and $, *, precision of non-negative decimal integer and $, *, type of A, B, E, G, X, a, b, c, d, e, f, g, i, o, p, s, u, x, %. This list is also (largely the same but) not identical to that of rb_sprintf().
[in] | argc | Number of objects in argv. |
[in] | argv | Format arguments. |
[in] | fmt | A printf-like format specifier. |
rb_eTypeError | `fmt` is not a string. |
rb_eArgError | Failed to parse `fmt`. |
Definition at line 215 of file sprintf.c.
Referenced by rb_f_sprintf(), and rb_str_format().
Identical to rb_str_catf(), except it takes a va_list.
It can also be seen as a routine identical to rb_vsprintf(), except it renders the output to the specified object rather than creating a new one.
[out] | dst | String to modify. |
[in] | fmt | A printf-like format specifier. |
[in] | ap | Contents to format. |
rb_eTypeError | `dst` is not a String. |
VALUE rb_vsprintf | ( | const char * | fmt, |
va_list | ap ) |
Identical to rb_sprintf(), except it takes a va_list.
[in] | fmt | A printf-like format specifier. |
[in] | ap | Contents to format. |
Definition at line 1211 of file sprintf.c.
Referenced by rb_fatal(), rb_frozen_error_raise(), rb_name_error(), rb_name_error_str(), rb_raise(), and rb_sprintf().