SayoriOS 0.3.3

split.c
См. документацию.
1
9 #include <mem/vmm.h>
10
11 #include "common.h"
12 #include "lib/string.h"
13
22 uint32_t str_cdsp(const char *a_str, const char* del){
23 int x = 0;
24 for(size_t i = 0, len = strlen(a_str); i < len; i++){
25 if (a_str[i] == del[0]) {
26 x++;
27 }
28 }
29 return x;
30 }
31
40 void str_split(const char a_str[], char *out[], char* del){
41 size_t x = str_cdsp(a_str, del);
42 // char* copy = kcalloc(strlen(a_str) + 1, 1);
43 // memcpy(copy, a_str, strlen(a_str));
44
45 int i = 0;
46 char *p;
47 p = strtok(a_str, del);
48 if (p == nullptr){
49 out[i] = a_str;
50 }
51 out[i] = p;
52 i++;
53
54 for(uint32_t a = 0; a < x; a++){
55 p = strtok(out[i], del);
56 if (p != nullptr){
57 out[i] = p;
58 i++;
59 }
60 }
61 }
common.h
Основные определения ядра
strlen
size_t strlen(const char *str)
Возращает длину строки
Definition: string.c:88
strtok
char * strtok(char *s, const char *delim)
Разбиение строки на части по указанному разделителю
Definition: string.c:411
str_cdsp
uint32_t str_cdsp(const char *a_str, const char *del)
Функция отладки
Definition: split.c:22
str_split
void str_split(const char a_str[], char *out[], char *del)
Функция для деления строк
Definition: split.c:40