From d1105f1cc6541c4ee7a495651df2a8b865f4b8d4 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Thu, 20 Jan 2022 15:28:24 +0500 Subject: [PATCH] Add "examples/snprintf[_va].c" --- .gitignore | 2 ++ Makefile.am | 10 ++++++++++ README.md | 5 ++--- examples/snprintf.c | 22 ++++++++++++++++++++++ examples/snprintf_va.c | 25 +++++++++++++++++++++++++ 5 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 examples/snprintf.c create mode 100644 examples/snprintf_va.c diff --git a/.gitignore b/.gitignore index c796f9f..d66a100 100644 --- a/.gitignore +++ b/.gitignore @@ -92,6 +92,8 @@ /examples/pfa /examples/printf /examples/printf_va +/examples/snprintf +/examples/snprintf_va /examples/units_human /tests/multiboot2_header_print1 diff --git a/Makefile.am b/Makefile.am index eb5e56d..88d1bbd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -113,6 +113,8 @@ if ENABLE_TESTS TESTS += \ examples/printf \ examples/printf_va \ + examples/snprintf \ + examples/snprintf_va \ tests/test_printf endif endif @@ -150,6 +152,14 @@ examples_printf_va_SOURCES = \ $(libkernaux_a_SOURCES) \ examples/printf_va.c +examples_snprintf_SOURCES = \ + $(libkernaux_a_SOURCES) \ + examples/snprintf.c + +examples_snprintf_va_SOURCES = \ + $(libkernaux_a_SOURCES) \ + examples/snprintf_va.c + examples_units_human_SOURCES = \ $(libkernaux_a_SOURCES) \ examples/units_human.c diff --git a/README.md b/README.md index 0649814..327a081 100644 --- a/README.md +++ b/README.md @@ -60,9 +60,8 @@ API * Code from [https://github.com/mpaland/printf](https://github.com/mpaland/printf). Thank you! * [printf](/examples/printf.c) * [vprintf](/examples/printf_va.c) - * `snprintf` - * `vsnprintf` - * `sprintf` + * [snprintf](/examples/snprintf.c) + * [vsnprintf](/examples/snprintf_va.c) diff --git a/examples/snprintf.c b/examples/snprintf.c new file mode 100644 index 0000000..c903407 --- /dev/null +++ b/examples/snprintf.c @@ -0,0 +1,22 @@ +#include + +#include +#include + +#define BUFFER_SIZE 1024 + +static char buffer[BUFFER_SIZE]; + +int main() +{ + const int result = kernaux_snprintf( + buffer, + sizeof(buffer), + "Hello, %s! Session ID: %u.", + "Alex", + 123 + ); + assert((size_t)result == strlen(buffer)); + assert(strcmp(buffer, "Hello, Alex! Session ID: 123.") == 0); + return 0; +} diff --git a/examples/snprintf_va.c b/examples/snprintf_va.c new file mode 100644 index 0000000..01924ae --- /dev/null +++ b/examples/snprintf_va.c @@ -0,0 +1,25 @@ +#include + +#include +#include + +#define BUFFER_SIZE 1024 + +static char buffer[BUFFER_SIZE]; + +static int my_snprintf(const char *const format, ...) +{ + va_list va; + va_start(va, format); + const int result = kernaux_vsnprintf(buffer, sizeof(buffer), format, va); + va_end(va); + return result; +} + +int main() +{ + const int result = my_snprintf("Hello, %s! Session ID: %u.", "Alex", 123); + assert((size_t)result == strlen(buffer)); + assert(strcmp(buffer, "Hello, Alex! Session ID: 123.") == 0); + return 0; +}