模拟实现 strncpy strncat strncmp strchr strrchr 函数

1、模拟实现strncpy函数

从第一个字符开始把src复制到dest里面去,如果src的长度大于n,则只复制前n个字符,如果src的长度小于n,则把src复制完后其余的全服复制成'\0'

#define _CRT_SECURE_NO_WARNINGS
#include
#include
void my_strncpy(char* dest, const char* src, int n)
{
 int i;
 int count = n;
 for (i = 0; i < n; i++)
  *dest++ = *src++;
}
int main()
{
 char arr[20] = { 34 };
 my_strncpy(arr, "hello world!", 7);//指定复制n个字符
 printf("%s ", arr);
 system("pause");
 return 0;
}

2、模拟实现strncat函数

追加复制,把src的内容复制到dest的'\0'处,复制n个字符,若nsrc,则其余部分为全零

#define _CRT_SECURE_NO_WARNINGS
#include
#include
void my_strncat(char*dest,const char* src,int n)
{
 while (*dest++)
 {
  ;
 }
 *dest--;
 int i;
 for (i = 0; i < n; i++)
 {
  *dest++ = *src++;
 }
}
int main()
{
 char arr[30] = { "hello " };
 my_strncat(arr, "world!", 7);
 printf("%s", arr);
 system("pause");
 return 0;
}

3、模拟实现strncmp函数

从第一个字符开始进行字符串比较,如果str是dest的子字符串则返回0,如果第一个str小于dest则返回-1,反之则返回1

#define _CRT_SECURE_NO_WARNINGS
#include
#include
int my_strncmp(char*src, char*dest, int n)
{
 while (*dest)
 {
  if ((*src - *dest) == 0)
  {
   src++;
   dest++;
  }
  else if ((*src - *dest) > 0)
  {
   return 1;
  }
  else
   return -1;
 }
 return 0;
}
int main()
{
 int ret = my_strncmp("fbcdef", "aabcdef",5);
 printf("%d ", ret);
 system("pause");
 return 0;
}
4、模拟实现strchr函数
寻找字符第一次出现的位置并打印剩下的字符串
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
char* my_strchr(char*dest, char src)
{
 while (*dest)
 {
  if (*dest == src)
  {
   return dest;
  }
  else
   dest++;
 }
 return NULL;
}
int main()
{
 printf("%s ",my_strchr("abcdef", 'g'));
 system("pause");
 return 0;
}

5、模拟实现strrchr函数
找出字符最后一次出现的位置并打印剩下的字符串

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
char* my_strrchr(char*dest, char src)
{
 int count = 0;
 while (*dest++)
 {
  count++;
 }
 dest--;
 while (count--)
 {
  if (*dest == src)
  {
   return dest;
  }
  else
   dest--;
 }
 return NULL;
}
int main()
{
 printf("%s ",my_strrchr("abecdef", 'e'));
 system("pause");
 return 0;
}







你可能感兴趣的:(C语言,模拟实现,strncpy,strnc)