关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

字符函数和字符串函数的使用及模拟实现(上)(2)

发布时间:2023-06-29 15:00:29


多增加了一个字节个数,即拷贝几个字节,更加有了限制


这样会更多考虑源字符串和目的字符串的空间大小,更加的严谨!!


6.strncat

多增加了一个字节个数,即追加几个字节,更加有了限制


这样会更多考虑源字符串和目的字符串的空间大小,更加的严谨!!

 

7.strncmp

多增加了一个字节个数,即比较几个字节,更加有了限制

这样会更多考虑源字符串和目的字符串的空间大小,更加的严谨!!

二、模拟实现

1.strlen

代码如下(示例):

法一:计数器方式

#include#includeint my_strlen(char* p) {  assert(str); //防止str为空指针  int count = 0;  while (*p++)  {  count++;  }  return count; } int main() {  char arr[] = "abcdef";  int ret = my_strlen(arr);  printf("%d", ret);  return 0; }

   

法二:递归,不创建临时变量

#include#includeint my_strlen(char *str) {  if (*str== '\0')  {  return 0;  }  else  {  return my_strlen(str+1) + 1;  } } int main() {  char arr[] = "abcdef";  int ret = my_strlen(arr);  printf("%d", ret); }

   

法三:指针减指针

#include#includeint my_strlen(char* str) {  char* p = str;  while (*p!= '\0')  {  p++;  }  return p - str; } int main() {  char arr[] = "abcdef";  int ret = my_strlen(arr);  printf("%d", ret); }

   

2.strcpy

代码如下(示例):

#include#includechar * my_strcpy(char* dest, const char* src) {  assert(dest && src);  char* p = dest;  while (*dest++ = *src++); return p; } int main() {  char arr1[] = "aaaaaaaaa";  char arr2[] = "bbbbbbbb";  my_strcpy(arr1,arr2);  printf("%s", arr1); }

   

3.strcat

代码如下(示例):

先找斜杠零,再拷贝.

#include#includechar* my_strcat(char* dest,const char* src) {  char* p = dest;  assert(dest && src);  while (*dest)  {  dest++;  }  while (*dest++ = *src++);  return p; } int main() {  char arr1[20] = "aaaaaa";  char arr2[] = "bbbbbbbb";  my_strcat(arr1,arr2);  printf("%s", arr1);  return 0; }

   

4.strcmp

代码如下(示例):

#include#includeint my_strcmp(const char* str1, const char* str2) {  assert(str1 && str2);  //法一  while (*str1)  {  while (*str1 != *str2)  {  return *str1 - *str2;  }  str1++;  str2++;  }  return 0;  //法二  while (*str1 == *str2)  {  if (*str1=='\0')  return 0;  str1++;  str2++;  }  return *str1 - *str2; } int main() {  char arr1[] = "abddd";  char arr2[] = "abc";  int ret=my_strcmp(arr1,arr2);  if (ret > 0)  printf("str1大\n");  else if (ret < 0)  printf("str2大\n");  else  printf("一样大\n");  return 0; }

   

5.strncat

void my_strncat(char* dest, char* src, int n) {  while (*dest)  {  dest++;  }  while (n--)  {  *dest++= *src++;  }  *dest = '\0'; } int main() {  char arr1[6] = "aa";  char arr2[] = "bbbbb";  my_strncat(arr1, arr2,3);  printf("%s", arr1); }

   

总结

   在使用字符串函数的时候,要注意的是函数的返回值和参数的使用,以及源字符串和目的字符串的空间大小!

       我们下期再见!


/template/Home/leiyu/PC/Static