繁体   English   中英

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

[英]Copy string source into destination, and then append a character in C

将字符串复制到目标位置,在目标位置末尾添加字符C,然后将终止目标位置为null。 我们可以假设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行?

给定假设,此代码似乎正确吗?

没有。

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

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

因此,丢弃dst = dst + 1;

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

另外,有没有更干净的方法来写入最后4行?

还有其他方法(现在要写3行),但是我想这很干净。

简而言之:删除此行,紧接循环后的一行,“ dst = dst + 1”。 休息吧。

有没有更干净的方法来写最后4行?

*dest++ = c;   
*dest   = '\0';    //reduced to 2 lines.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM