From ab1ac4456235c8aa5e52e1b5ac378b2d73b228b2 Mon Sep 17 00:00:00 2001 From: xolatile Date: Tue, 31 Oct 2023 07:06:25 -0400 Subject: [PATCH] Added character counting function... --- xtandard.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ xtandard.h | 10 +++++++--- 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/xtandard.c b/xtandard.c index c470b31..ef799fa 100644 --- a/xtandard.c +++ b/xtandard.c @@ -465,6 +465,34 @@ void file_list_export (char * name) { close (file_list_mark [file_list_active]); } +void file_list_insert_character (char character, int position) { + int offset = 0; + + ++file_list_size [file_list_active]; + + file_list_data [file_list_active] = reallocate (file_list_data [file_list_active], file_list_size [file_list_active]); + + for (offset = file_list_size [file_list_active] - 1; offset != position; --offset) { + file_list_data [file_list_active] [offset] = file_list_data [file_list_active] [offset - 1]; + } + + file_list_data [file_list_active] [position] = character; +} + +void file_list_remove_character (int position) { + int offset = 0; + + if (position == 0) { + return; + } + + --file_list_size [file_list_active]; + + for (offset = position - 1; offset != file_list_size [file_list_active] - 1; ++offset) { + file_list_data [file_list_active] [offset] = file_list_data [file_list_active] [offset + 1]; + } +} + void file_list_delete (void) { int i; @@ -539,6 +567,34 @@ int character_compare_array (char character, char * character_array) { return (0); } +int character_count (char * string, int from, int to, char this, char stop) { + int count; + + if (to < from) { + for (count = 0; to < from; --from) { + if ((string [from] == this) || (this == '\0')) { + ++count; + } + if (string [from] == stop) { + break; + } + } + } else if (from < to) { + for (count = 0; from < to; ++from) { + if (string [from] == this) { + ++count; + } + if (string [from] == stop) { + break; + } + } + } else { + count = 0; + } + + return (count); +} + int string_length (char * string) { int length; diff --git a/xtandard.h b/xtandard.h index 482aa21..cc3c159 100644 --- a/xtandard.h +++ b/xtandard.h @@ -86,9 +86,11 @@ extern void * file_record (char * name); extern char * file_import (char * name); extern void file_export (char * name, void * data); -extern void file_list_import (char * name); -extern void file_list_export (char * name); -extern void file_list_delete (void); +extern void file_list_import (char * name); +extern void file_list_export (char * name); +extern void file_list_insert_character (char character, int position); +extern void file_list_remove_character (int position); +extern void file_list_delete (void); extern int character_is_uppercase (char character); extern int character_is_lowercase (char character); @@ -104,6 +106,8 @@ extern int character_is_hexadecimal (char character); extern int character_compare_array (char character, char * character_array); +extern int character_count (char * string, int from, int to, char this, char stop); + extern int string_length (char * string); extern char * string_reverse_limit (char * string, int limit);