将字符串复制到目标中,在目标末尾附加一个字符 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/