diff options
| author | Michal Idziorek <m.i@gmx.at> | 2015-05-18 00:48:07 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2015-05-18 00:48:07 +0200 |
| commit | db22b587966b4a4eaa47536f32ca812532446bcb (patch) | |
| tree | b6d471f5232973713ef64d9c81feefef51ee5eaf /lib/string | |
| parent | 042e25e19b5fc0cec1d47440c26246c886cf39f6 (diff) | |
heavy refactoring underway
Diffstat (limited to 'lib/string')
| -rw-r--r-- | lib/string/string.c | 43 | ||||
| -rw-r--r-- | lib/string/string.h | 8 |
2 files changed, 51 insertions, 0 deletions
diff --git a/lib/string/string.c b/lib/string/string.c new file mode 100644 index 0000000..be2c7ed --- /dev/null +++ b/lib/string/string.c @@ -0,0 +1,43 @@ +#include <stdbool.h> +#include "string.h" + +void* memcpy(void* restrict dstptr, const void* restrict srcptr, int size) +{ + unsigned char* dst = (unsigned char*) dstptr; + const unsigned char* src = (const unsigned char*) srcptr; + for ( int i = 0; i < size; i++ ) + dst[i] = src[i]; + return dstptr; +} + + +// extra function for non-null terminated +//length 0 for null terminated strings; +int strcmp_l(char *str1, char *str2, int length) +{ + int i=0; + while(true) + { + + if(str1[i]!=str2[i])return str1[i]-str2[i]; + i++; + if(i==length) return 0; + + if( length==0 && (str1[i]==0 || str2[i]==0 ) ) + return str1[i]-str2[i]; + + } + +} +static int strcmp(char *str1, char *str2) +{ + return strcmp_l(str1,str2,0); +} + + +int strlen(const char* string) +{ + int result = 0; + while ( string[result] )result++; + return result; +} diff --git a/lib/string/string.h b/lib/string/string.h new file mode 100644 index 0000000..e41eb94 --- /dev/null +++ b/lib/string/string.h @@ -0,0 +1,8 @@ +#ifndef STRING_H +#define STRING_H + + +void* memcpy(void* restrict dstptr, const void* restrict srcptr, int size); +int strcmp_l(char *str1, char *str2, int length); + +#endif |
