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 }
Основные определения ядра
size_t strlen(const char *str)
Возращает длину строки
Definition: string.c:88
char * strtok(char *s, const char *delim)
Разбиение строки на части по указанному разделителю
Definition: string.c:411
uint32_t str_cdsp(const char *a_str, const char *del)
Функция отладки
Definition: split.c:22
void str_split(const char a_str[], char *out[], char *del)
Функция для деления строк
Definition: split.c:40