Commit 6a39fd0b by triazo

write simple memcpy function

parent 55d156d8
Showing with 26 additions and 13 deletions
#include "string.h" #include "string.h"
#include <stdbool.h> #include <stdbool.h>
void *memset(void *s, int c, size_t n){ void *memset(void *s, int c, size_t n)
{
unsigned char* p=s; unsigned char* p=s;
while(n--) while(n--)
*p++=(unsigned char) c; *p++=(unsigned char) c;
return s; return s;
} }
void memcpy(void* dest, void* src, size_t n)
{
size_t i;
char* d = (char*) dest;
char* s = (char*) src;
for (i = 0; i < n; ++i)
{
d[i] = s[i];
}
}
void reverse ( char s[] ) void reverse ( char s[] )
{ {
int c, i, j; int c, i, j;
for (i=0, j= strlen(s)-1;i<j;i++,j--) for (i=0, j= strlen(s)-1;i<j;i++,j--)
{ {
c = s[i]; c = s[i];
...@@ -23,7 +35,7 @@ void reverse ( char s[] ) ...@@ -23,7 +35,7 @@ void reverse ( char s[] )
void itoa(int n, char s[]) void itoa(int n, char s[])
{ {
int i, sign; int i, sign;
if ((sign = n) < 0) /* record sign */ if ((sign = n) < 0) /* record sign */
{ {
n = -n; /* make n positive */ n = -n; /* make n positive */
...@@ -42,7 +54,7 @@ void itoa(int n, char s[]) ...@@ -42,7 +54,7 @@ void itoa(int n, char s[])
} }
size_t strlen(const char* str) size_t strlen(const char* str)
{ {
size_t ret = 0; size_t ret = 0;
while ( str[ret] != 0 ) while ( str[ret] != 0 )
...@@ -69,7 +81,7 @@ int strncmp(const char *s1, const char *s2, size_t n) ...@@ -69,7 +81,7 @@ int strncmp(const char *s1, const char *s2, size_t n)
return 0; return 0;
} }
int atoi(const char *p) int atoi(const char *p)
{ {
int k = 0; int k = 0;
while (*p) { while (*p) {
...@@ -88,36 +100,36 @@ int stoi(const char *str) ...@@ -88,36 +100,36 @@ int stoi(const char *str)
{ {
if ((*str) == 0) if ((*str) == 0)
return 0; return 0;
int res = 0; int res = 0;
int sign = 1; int sign = 1;
int i = 0; int i = 0;
if (str[0] == '-') if (str[0] == '-')
{ {
sign = -1; sign = -1;
i++; i++;
} }
for (; str[i] != '\0'; ++i) for (; str[i] != '\0'; ++i)
{ {
if (isNumericChar(str[i]) == false) if (isNumericChar(str[i]) == false)
return 0; return 0;
res = res*10 + str[i] - '0'; res = res*10 + str[i] - '0';
} }
return sign*res; return sign*res;
} }
double atof(const char* num) double atof(const char* num)
{ {
if (!num || !*num) if (!num || !*num)
return 0; return 0;
double integerPart = 0; double integerPart = 0;
double fractionPart = 0; double fractionPart = 0;
int divisorForFraction = 1; int divisorForFraction = 1;
int sign = 1; int sign = 1;
bool inFraction = false; bool inFraction = false;
if (*num == '-') if (*num == '-')
{ {
++num; ++num;
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
#define _STRING_ING #define _STRING_ING
#include<stddef.h> #include<stddef.h>
void* memset(void *s, int c, size_t n); void* memset(void* s, int c, size_t n);
void memcpy(void* dest, void* src, size_t n);
void itoa(int n, char s[]); void itoa(int n, char s[]);
size_t strlen(const char* str); size_t strlen(const char* str);
int strcmp(const char* s1, const char* s2); int strcmp(const char* s1, const char* s2);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment