diff options
Diffstat (limited to 'lib/string/string.c')
| -rw-r--r-- | lib/string/string.c | 43 |
1 files changed, 43 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; +} |
