//模拟实现strncat
//追加后添加’\0’
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
#include <assert.h>
char *my_strncat(char *des, const char *src, int count)
{
assert(des);
assert(src);
char *cat = des;
int i = ;
while (*des != '\0')
{
des++;
}
for (; i <count; i++)
{
*des = *src;
des++;
*src++;
}
return cat;
}
int main()
{
char a[] = {'a','b','c','\0'};
char b[] = "world and bit";
int n = ;
char *ret = my_strncat(a, b, n);
printf("ret: %s\n", ret);
system("pause");
return ;
}
模拟实现strncpy
//拷贝完后在后边追加’\0’
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
#include <assert.h>
char *my_strncpy(char *dst, const char *src, int n)
{
assert(dst);
assert(src);
assert(n > );
char *cpy = dst;
while (n--)
{
*dst++ = *src++;
}
return cpy;
}
int main()
{
char a[] = "abcdefgh";
char *p = "1234";
int n = ;
char *ret = my_strncpy(a, p, );
printf("ret: %s\n", ret);
system("pause");
return ;
}
模拟实现strncmp
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
#include <assert.h>
int my_strncmp(const char *str1, const char *str2, int n)
{
assert(str1);
assert(str2);
assert(n > );
const char *p = str1;
const char *q = str2;
while (*p != '\0' && *q != '\0' &&(n--))
{
if (*p ==*q)
{
p++;
q++;
}
else if (*p > *q)
{
return ;
}
else
{
return -;
}
}
if (*p != '\0')
{
return ;
}
if (*q != '\0')
{
return -;
}
}
int main()
{
char *p = "abcd1234";
char *q = "abcd2345";
int n = ;
int ret = my_strncmp(p, q, n);
printf("ret = %d\n", ret);
system("pause");
return ;
}
以上!