![](/img/trans.png)
[英]why strncpy is able to copy source string even if destination buffer is zero?
[英]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.