C 各种库函数的实现

来源:互联网 发布:中标麒麟安装mysql 编辑:程序博客网 时间:2024/06/05 12:47


各种库函数的实现微笑!!!!!

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>

////模拟实现strncpy
//char *my_strncpy(char *b, char *a,int count)
//{
// assert(a);
// assert(b);
// char *ret = b;
// while (*b!='\0')
// {
//  b++;
// }
// while (count--)
// {
//  *b++ = *a++;
// }
// *b = '\0';
// return ret;
//}
//int main()
//{
// char a[] = "abcdef";
// char b[5] = {0};
// int n = 3;
// printf("%s\n", my_strncpy(b, a, n));
// return 0;
//}


//模拟实现strcpy
//void my_strcpy(char *b, char *a)
//{
// assert(a);
// assert(b);
//  while (*b != '\0')
//   {
//     b++;
//   }
// while (*b++ = *a++)
// {
//  ;
// }
//}
//int main()
//{
// char a[] = "abcdef";
// char b[20] = { 0 };
// my_strcpy(b,a);
// printf("%s\n",b);
// return 0;
//}



////模拟实现strncat 
//void my_strncat(char *a, const char *b,int count)
//{
// char *ret = a;
// assert(a);
// assert(b);
// while (*a != '\0')//(*a)
// {
//  a++;
// }
// //a--;
// //while (count--)
// // if (!(*a++ = *b++))
// //  return(ret);
//    /**a = '\0';
// return(ret); */
// while (count--)
// {
//  *a++=*b++;
// }
//
// return ret;
//}
//int main()
//{
// char a[20] = "abcd";
// char b[] = "efga";
// my_strncat(a, b, 3);
// printf("%s\n",a);
// return 0;
//}



////模拟实现strcat 
//char* my_strcat(char *a, const char *b)
//{
// char *ret = a;
// assert(a);
// assert(b);
// while (*a!='\0')//(*a)
// {
//  a++;
// }
// while (*a++ = *b++)//把'\0'也复制了
// {
//  ;
// }
// return ret;
//}
//int main()
//{
// char a[20] = "abcd";
// char b[] = "efga";
// printf("%s\n",my_strcat(a,b));
// return 0;
//}


////模拟实现strncmp
//int my_strncmp(const char *a, const char *b,int count)
//{
// assert(a);
// assert(b);
// if (!count)
// {
//  return 0;
// }
// while (count--)
// {
//  if (*a == 0 || *a != *b)
//  {
//   return(*a-*b);
//  }
//  a++;
//  b++;
// }
// return 0;
//}
//int main()
//{
// char a[] = "abcdf";
// char b[] = "abfde";
// int n=3;
// int ret = my_strncmp(a, b, n);
// printf("%d\n", ret);
// return 0;
//}


////模拟实现strcmp
////       returns - 1 if src <  dst
////       returns  0 if src == dst
////       returns + 1 if src >  dst
//int my_strcmp(const char *a,const char *b)
//{
// assert(a);
// assert(b);
// while ((*a) == (*b))
// {
//  if (*a == '\0')  return 0;
//  a++;
//  b++;
// }
// if (*a>*b)   return 1;//return *a-*b
// else         return -1;//return *a-*b
// 
//}
//int main()
//{
// char a[] = "abcdf";
// char b[] = "abcdg";
// int ret=my_strcmp(a, b);
// printf("%d\n",ret);
// return 0;
//}

////2
////模拟实现memcpy
//void * my_memcpy(void *dest,const void *src, int count)
//{
// 
// void *ret = dest;
// char *d = (char *)dest;
// char *s = (char *)src;
// assert(dest != NULL);
// assert(src != NULL);
//  while (count--)
//  {
//   *d++ = *s++;
//   //d++;
//   //s++;
//  }
// return ret;
//}
//int main()
//{
// int a[] = {1,2,3,4,5,6,7,8,9,0};
// int b[10] = {0};
// int len = sizeof(a);
// int i = 0;
// printf("%d\n",len);
// for (i=0; i <10; i++)
// {
//  printf("%d ",a[i]);
// }
// printf("\n");
// //strcpy((char *)b, (char *)a);
//    my_memcpy(b,a,len);
// for (i=0; i <10; i++)
// {
//  printf("%d ", b[i]);
// }
// printf("\n");
// return 0;
//}


////模拟实现memmove
//void* my_memmove(void *dest,const void *src, int count)
//{
// assert(dest != NULL);
// assert(src != NULL);
// char *d = (char *)dest;
// char *s = (char *)src;
// if ((d <= s) || (d >= (s + count)))
// {
//  while (count--)
//  {
//   *d++ = *s++;
//   //d++;
//   //s++;
//  }
// }
// else
// {
//  d = (char *)dest + count - 1;
//  s = (char *)src + count - 1;
//  while (count--)
//  {
//   *d-- = *s--;
//   //s--;
//   //d--;
//  }
// }
// return d;
//}
//int main()
//{
// char s[] = "1234567890";
// printf("%s\n", s);
// char* p1 = s+1;
// char* p2 = s + 2;
// my_memmove(p2, p1, 5);
// printf("%s\n", s);
// return 0;
//}

0 0
原创粉丝点击