-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstring.c
More file actions
101 lines (88 loc) · 1.86 KB
/
Copy pathstring.c
File metadata and controls
101 lines (88 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "string.h"
#include <debug.h>
#include <global.h>
void memset(void* dst, uint8_t value, uint32_t size){
ASSERT(dst);
char* p = dst;
while(size-- > 0)*p++ = value;
}
void memcpy(void* dst, const void* src, uint32_t size){
ASSERT(dst);
ASSERT(src);
char* p_dst = dst;
char const* p_src = src;
while(size-- > 0)*p_dst++ = *p_src++;
}
int memcmp(const void* a, const void* b, uint32_t size){
ASSERT(a);ASSERT(b);
char const* pa = a;
char const* pb = b;
while(size-- > 0){
if(*pa > *pb)
return 1;
if(*pa++ < *pb++)
return -1;
}
return 0;
}
char* strcpy(char* dst, const char* src){
char* p_dst = dst;
while(*src)*p_dst++ = *src++;
return dst;
}
uint32_t strlen(const char* str){
ASSERT(str);
uint32_t count = 0;
while(*str++)++count;
return count;
}
int8_t strcmp(const char* a, const char* b){
ASSERT(a);ASSERT(b);
while(*a && *b){
if(*a > *b)return 1;
if(*a < *b)return -1;
++a;
++b;
}
if(*a)return 1;
if(*b)return -1;
return 0;
}
char* strchr(const char* str, const uint8_t ch){
ASSERT(str);
while(*str){
if(*str++ == ch)
return (char*)--str;
}
return NULL;
}
char* strrchr(const char* str, const uint8_t ch){
ASSERT(str);
const char* last_char = NULL;
while(*str){
if(*str == ch)
last_char = str;
++str;
}
return (char*)last_char;
}
char* strcat(char* dst, const char* src){
ASSERT(dst);
ASSERT(src);
char* str = dst;
while(*str++);
--str;
while((*str++ = *src++));
return dst;
}
uint32_t strchrs(const char* str, uint8_t ch){
ASSERT(str);
uint32_t ch_cnt = 0;
char const* p = str;
while(*p){
if(*p == ch)
++ch_cnt;
++p;
}
return ch_cnt;
}