关于字符串函数的一些代码实现(strncpystrncatstrncmpstrchrstrrchr)

xiaoxiao2021-02-28  71

//模拟实现strncpy函数 //从第一个字符开始把src复制到dest里面去,如果src的长度大于n,则只复制前n个字符,如果src的长度小于n,则把src复制完后其余的全服复制成'\0' #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> 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; } //模拟实现strncat函数 //追加复制,把src的内容复制到dest的'\0'处,复制n个字符,若n<src,则只复制前n个字符,若n>src,则其余部分为全零 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> 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; } //模拟实现strncmp函数 //从第一个字符开始进行字符串比较,如果str是dest的子字符串则返回0,如果第一个str小于dest则返回-1,反之则返回1 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> 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; } //模拟实现strchr函数 //寻找字符第一次出现的位置并打印剩下的字符串 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> #include<string.h> 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; } //模拟实现strrchr函数 //找出字符最后一次出现的位置并打印剩下的字符串 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> #include<string.h> 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; }
转载请注明原文地址: https://www.6miu.com/read-34090.html

最新回复(0)