string – String-, Pfad- und Terminal-Helfer
Zusammenfassung
string ist eine C-Helferbibliothek für gebundene String-Operationen
(alle Buffer-Funktionen mit Größenkontrolle), Pfad-Handling (dirname,
Executable-Pfad, Verzeichnis-Test/Anlage) sowie einfache
Terminal-Ansteuerung über ANSI-Escape-Sequenzen (Farben, Cursor, Clear).
Sie ist die Basis-Abhängigkeit der Bibliotheken threading und
sm/rbs.
Umfang
- String:
string_copy/string_catmit Buffer-Größe als Parameter. Fester Buffer-Typstring_tmit LängenlimitSTRING_MAXLEN= 4096;STRING_ERROR(-1) für Fehlerfälle. - Pfade:
string_dirname_from_filepath,string_get_exe_path,string_directory_exists/string_directory_create,string_filepath_exist,string_append_directory_to_path_and_create. - Substring:
string_calculate_substring_index(Index eines Teilstrings). - Terminal:
string_set_cursor_position,string_clear_screen. - ANSI-Makros: Vorder-/Hintergrundfarben (Standard + Bright),
Textformatierung (fett, kursiv, unterstrichen, …), Cursor-Bewegung,
256-Farben, 24-bit True Color sowie kombinierte Hilfsmakros wie
BOLD_RED,WHITE_ON_BLUE,RED_ON_WHITE.
API (Kern)
typedef char string_t[STRING_MAXLEN];
int32_t string_copy(char* destination, size_t size_bytes, const char* source);
int32_t string_cat(char* destination, size_t size_bytes, const char* source);
const char* string_dirname_from_filepath(char* filepath);
void string_get_exe_path(char* exe_path, size_t buffer_size);
bool string_directory_exists(const char* directory);
void string_directory_create(const char* directory);
int32_t string_calculate_substring_index(const char* string, const char* sub_string);
void string_set_cursor_position(int x, int y);
void string_clear_screen();Nutzung
#include <string/string.h>
string_t buf;
string_copy(buf, sizeof(buf), "hallo");
string_cat(buf, sizeof(buf), " welt");
printf(COLOR_GREEN "%s" COLOR_RESET "\n", buf);Abhängigkeiten
Keine weiteren Projekt-Bibliotheken (nur libc/POSIX).
Build
cmake -S . -B build
cmake --build buildEinbindung: add_subdirectory(../../libraries/string …), Header über den
Include-Pfad <string/string.h>.
Quellen
- Repo: https://github.com/deppenkaiser/string (public, Apache-2.0)
libraries/string/string/{string.h,string.c}