diff options
author | kdx <kdx@42l.fr> | 2023-03-13 23:59:51 +0100 |
---|---|---|
committer | kdx <kdx@42l.fr> | 2023-03-13 23:59:56 +0100 |
commit | edfde221a0e8ca49fde51a45a211e540ca46b0f5 (patch) | |
tree | 9484707929a50e98b7a46218fca8b2a6a17e83fd | |
parent | 3c2abb64ad8a43e453a3388cec18728d1dd36254 (diff) | |
download | golem-edfde221a0e8ca49fde51a45a211e540ca46b0f5.tar.gz |
string slice
-rw-r--r-- | main.c | 11 | ||||
-rw-r--r-- | slice.c | 29 | ||||
-rw-r--r-- | slice.h | 11 |
3 files changed, 51 insertions, 0 deletions
@@ -0,0 +1,11 @@ +#include "slice.h" + +int +main(void) +{ + Slice slice = slice_from_str("bonsoir paris"); + slice_print(slice); + slice_print(slice_sub(slice, 3, 4)); + slice_print(slice_sub(slice, 3, 7)); + return 0; +} @@ -0,0 +1,29 @@ +#include "slice.h" +#include <string.h> +#include <stdio.h> + +Slice +slice_print(Slice slice) +{ + putchar('"'); + for (int i = slice.begin; i < slice.end; i++) { + putchar(slice.str[i]); + } + putchar('"'); + putchar('\n'); + return slice; +} + +Slice +slice_from_str(const char *str) +{ + if (str == NULL) + return (Slice){ NULL, 0, 0 }; + return (Slice){ str, 0, strlen(str) }; +} + +Slice +slice_sub(Slice src, int begin, int end) +{ + return (Slice){ src.str, src.begin + begin, src.begin + end }; +} @@ -0,0 +1,11 @@ +#pragma once + +typedef struct { + const char *str; + int begin; + int end; +} Slice; + +Slice slice_print(Slice slice); +Slice slice_from_str(const char *str); +Slice slice_sub(Slice src, int begin, int end); |