📜  为strcat()和strcmp()写一行函数

📅  最后修改于: 2021-05-25 19:06:43             🧑  作者: Mango

递归可用于一行执行两项任务。下面是stracat()和strcmp()的一行实现。

/* my_strcat(dest, src) copies data of src to dest.  To do so, it first reaches end of the string dest using recursive calls my_strcat(++dest, src).  Once end of dest is reached, data is copied using 
(*dest++ = *src++)?  my_strcat(dest, src). */
void my_strcat(char *dest, char *src)
{
  (*dest)? my_strcat(++dest, src): (*dest++ = *src++)? my_strcat(dest, src): 0 ;
}
  
/* driver function to test above function */
int main()
{
  char dest[100] = "geeksfor";
  char *src = "geeks";
  my_strcat(dest, src);
  printf(" %s ", dest);
  getchar();
}    

与my_strcmp()相比,函数my_strcmp()很简单。

/* my_strcmp(a, b) returns 0 if strings a and b are same, otherwise 1.   It recursively increases a and b pointers. At any point if *a is not equal to *b then 1 is returned.  If we reach end of both strings at the same time then 0 is returned. */
int my_strcmp(char *a, char *b)
{
  return (*a == *b && *b == '\0')? 0 : (*a == *b)? my_strcmp(++a, ++b): 1;
} 
  
/* driver function to test above function */
int main()
{
  char *a = "geeksforgeeks";
  char *b = "geeksforgeeks";
  if(my_strcmp(a, b) == 0)
     printf(" String are same ");
  else  
     printf(" String are not same ");  
  
  getchar();
  return 0;
}    

上面的函数执行非常基本的字符串连接和字符串比较。这些功能提供的功能与标准库功能不同。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。