#include "stdio.h"
#include "stdlib.h"
#define PRINTLINE() printf("--------------------------------------------------\n");
void
myprint(
char
* buff,
int
max)
{
int
i = 0;
while
(max)
{
printf
(
"%c"
,buff[i++]);
max--;
}
printf
(
"\n"
);
}
#include "string.h"
char
* mystrcpy(
char
* dest,
const
char
* src)
{
int
i = 0;
while
(src[i] !=
'\0'
)
{
dest[i] = src[i];
i++;
}
dest[i] =
'\0'
;
return
&dest[0];
}
char
* mystrncpy(
char
* dest,
const
char
* src,
size_t
maxlen)
{
int
i = 0;
while
(src[i] !=
'\0'
&& i < maxlen)
{
dest[i] = src[i];
i++;
}
while
(i < maxlen)
{
dest[i] =
'\0'
;
i++;
}
return
&dest[0];
}
int
main(
void
)
{
char
buff_a[50] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
;
char
buff_b[20] =
"abcdefghijklmnopq"
;
char
buff_at[50] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
;
char
buff_bt[20] =
"abcdefghijklmnopq"
;
char
* result = 0;
printf
(
"origin a : %s \n"
, buff_a);
printf
(
"origin b : %s \n"
, buff_b);
printf
(
"origin &a or &c : %X , %X \n"
, &buff_a, &buff_b);
PRINTLINE();
result =
strcpy
(buff_a, buff_b);
printf
(
"a : %s \n"
, buff_a);
printf
(
"b : %s \n"
, buff_b);
printf
(
"&a: %X \n"
, result);
memcpy
(buff_a, buff_at,
strlen
(buff_a));
memcpy
(buff_b, buff_bt,
strlen
(buff_b));
PRINTLINE();
result = mystrcpy(buff_a, buff_b);
printf
(
"a : %s \n"
, buff_a);
printf
(
"b : %s \n"
, buff_b);
printf
(
"&a: %X \n"
, result);
memcpy
(buff_a, buff_at,
strlen
(buff_a));
memcpy
(buff_b, buff_bt,
strlen
(buff_b));
PRINTLINE();
result =
strncpy
(buff_a, buff_b, 30);
printf
(
"a : %s \n"
, buff_a);
printf
(
"b : %s \n"
, buff_b);
printf
(
"&a: %X \n"
, result);
myprint(buff_a, 50);
memcpy
(buff_a, buff_at,
strlen
(buff_a));
memcpy
(buff_b, buff_bt,
strlen
(buff_b));
PRINTLINE();
result = mystrncpy(buff_a, buff_b, 30);
printf
(
"a : %s \n"
, buff_a);
printf
(
"b : %s \n"
, buff_b);
printf
(
"&a: %X \n"
, result);
myprint(buff_a, 50);
return
0;
}
#endif