C语言中strcpy和strcat的使用和模拟实现

  目录

  一,strcpy()函数

  strcpy() 函数是 C语言中一个非常重要的字符串处理函数,其功能是将一个字符串复制到另一个字符串中。该函数原型如下:

  char*strcpy(char*dest,const char*src)

  其中,dest 表示目标字符串,即将被复制到的字符串;src 表示源字符串,即将被复制的字符串。函数返回一个指向目标字符串的指针。

  具体使用方法

  我们可以先定义一个源字符串,arr1和一个目标字符串arr2,然后调用strcpy()函数将源字符串arr1中的内容复制到arr2中,最后我们可以使用printf()函数输出源字符串和目标字符串的值。

  #include

  #include

  int main()

  {

  char arr1[] = "Hello World";

  char arr2[100];

  strcpy(dest, src);

  printf("Source String: %s

  ", arr1);

  printf("Destination String: %s

  ", arr2);

  return 0;

  }

  运行结果

  我们可以看到arr1和arr2打印的结果是一样的,说明strcpy()函数正确的将arr1中的内容复制到arr2中了

  注意

  1,在使用strcpy()函数时arr2一定要有足够大的空间来储存arr1中复制过来的内容,否则,就会导致内存越界和数据丢失,

  2,由于 strcpy() 函数的第二个参数是一个 const char * 类型,即源字符串是只读的,因此在复制过程中不会改变源字符串的值。

  二,strcat()函数

  strcat函数可以将一个字符串拼接到另一个字符串的末尾,

  char*strcat(char*dest,const char*src)

  #include

  #include

  int main()

  {

  char str1[50] = "Hello";

  char str2[50] = "World";

  strcat(str1, str2);

  printf("Result: %s

  ", str1);

  return 0;

  }

  运行结果

  我们可以看到strcat()函数将字符串arr2拼接到字符串arr1的末尾。strcat()函数用于将一个字符串拼接到字符串的末尾,同样,strcat()函数也要注意内存的越界。

  三,strncpy()函数

  有时候我们需要复制一个字符串的前 n 个字符,而不是整个字符串。可以使用 strncpy() 函数来实现这个功能,

  char *strncpy(char *dest, const char *src, size_t n);

  其中,dest 表示目标字符串,即将被复制到的字符串;src 表示源字符串,即将被复制的字符串;n 表示要复制的字符数。函数返回一个指向目标字符串的指针。

  也就是说,strncpy()函数是将 src 指向的前 n 个字符拷贝到 dest 字符数组中:

  例如:我们需要将arr1中的前5个字符复制到arr2中

  #include

  #include

  int main()

  {

  char arr1[] = "Hello World";

  char arr2[100];

  strncpy(arr2, arr1, 5);

  printf("Source String: %s

  ", arr1);

  printf("Destination String: %s

  ", arr2);

  return 0;

  }

  结果

  strncpy也可以截取一个字符串中的一段字符串

  比如我们使用 strncpy() 函数将源字符串 str 中的第 6 个字符开始的 5 个字符复制到源字符串中,然后使用空字符将字符串截断。最终结果为"World"。

  需要注意的是,strncpy() 函数复制的字符数必须小于或等于源字符串的长度,否则可能会导致未定义的行为。

  #include

  #include

  int main()

  {

  char str[] = "Hello World";

  strncpy(str, str + 6, 5);

  str[5] = '0';

  printf("Result: %s

  ", str);

  return 0;

  }

  运行结果

  四,strcpy的模拟实现

  在c语言中,我们定义一个字符数组arr1将字符串储存在字符数组中。字符数组本质上是一个指向字符的指针。因此我们可以使用指针来实现字符串的复制操作。

  #include

  #include

  void my_strcpy(char* dest, const char* src)

  {

  assert(dest && src);

  char* p = dest;

  while(*src!='0')

  {

  *dest++ = *src++;

  }

  *dest = '0';

  }

  int main()

  {

  char arr1[] = "wanglongbao";

  char arr2[100];

  my_strcpy(arr2, arr1);

  printf("arr1=%s

  ", arr1);

  printf("arr2=%s

  ", arr2);

  return 0;

  }

  运行结果

  五,strcat的模拟实现

  #include

  #include

  void my_strcat(char* dest, const char* scr)

  {

  assert(dest && scr);

  while (*dest != '0')

  {

  dest++;

  }

  while (*scr != '0')

  {

  *dest++ = *scr++;

  }

  *dest = '0';

  }

  int main()

  {

  char arr1[] = "wanghongbao";

  char arr2[] = "jiayou";

  my_strcat(arr1, arr2);

  printf("%s", arr1);

  return 0;

  }

  运行结果

  以上就是C语言中strcpy和strcat的使用和模拟实现的详细内容,更多关于C语言strcpy和strcat使用的资料请关注脚本之家其它相关文章!

  您可能感兴趣的文章: