这看起来应该非常简单,但出于某种原因,我没有让它工作。我有一个名为 seq 的字符串,它看起来像这样:
ala
ile
val
我想把前 3 个字符复制到另一个字符串中。我使用命令:
memcpy(fileName, seq, 3 * sizeof(char));
这应该使 fileName = "ala"
,对吧?但出于某种原因,我得到了 fileName = "ala9"
。我目前正在解决这个问题,只是说 fileName[4] = '\0'
,但想知道为什么我会得到 9。
注意: 将 seq 更改为
后ala
ile
val
ser
并重新运行相同的代码,fileName 变为 "alaK"
。不再是 9,但仍然是一个错误字符。
最佳答案
C 使用空终止符来表示字符串的结尾。 memcpy 不知道您正在复制字符串(它只是复制字节),所以它不想放一个。您的解决方法实际上是正确的答案。
编辑:wolfPack88 有一个很好的观点。您确实需要更改文件名 [3]。此外,以下评论提出了一些关于 strncpy 的重要观点,这也是一个值得学习的选择。
关于在C中复制字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001552/