将字符串源复制到目标中,然后在 C 中追加一个字符

标签 c string function loops pointers

将字符串复制到目标中,在目标末尾附加一个字符 C,然后空终止目标。我们可以假设 sizeof(destination) >= strlen(source) + 2

void strcpyALT(char* dest, char* source, char c)  {
  char* dst = dest;
  char* src = source;
  while(*src) {
      *(dst++) = *(src++);
  }
  dst = dst + 1;
  *dst = c;
  dst = dst + 1;
  *dst = '\0';
}

我是 C 的新手,但有两个问题,根据假设,这段代码看起来是否正确?我为自己设置了一些本地测试,但只是想确保我没有犯任何我没有发现的明显错误。另外,有没有更简洁的方式来编写最后 4 行?

最佳答案

does this code seem correct given the assumption?

没有。

  while(*src) {
      *(dst++) = *(src++);
  }
  dst = dst + 1;
  *dst = c;

这里,当你退出循环时,dst 已经指向了c 应该写入的位置(附加到字符串)。当您执行 dst = dst + 1; 时,您保持该位置不变,并将 c 写入所需位置的下一个位置。

因此丢弃 dst = dst + 1;

(拉伸(stretch))如果有疑问,请对其进行更多测试。

Also, is there a cleaner way to write the last 4 lines?

还有其他方法(现在写 3 行),但我会说这已经足够干净了。

关于将字符串源复制到目标中,然后在 C 中追加一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46232618/

相关文章:

c++ - 如何获取两个字符串的所有排列组合?

c - 什么编译器不支持 printf 标志中的 "%#x"样式?

c - 在 Unix/Solaris 中验证用户名

java - 如何在java中将Unicode(utf-8)转换为十六进制字符串?

php - 在比较 PHP 中的字符串之前使编码统一

Python3 Tkinter - 使用按钮打开 .py 文件

R:在循环中定义函数

javascript - 根据函数的初始化方式,ES6 导入的行为有所不同

c - 如何计算多项式导数?

c - 如何使用 C 创建类似 Windows 的 GUI