这似乎应该很简单,但由于某些原因,我无法使其工作。我有一个名为seq的字符串,它看起来像这样:
ala
ile
val
我想将字符串的前三个字符复制到另一个字符串中。我使用的命令是:
memcpy(fileName, seq, 3 * sizeof(char));
那应该让fileName = "ala"
,对吧?但出于某种原因,我得到了fileName = "ala9"
。目前我通过说fileName[4] = '\0'
来解决这个问题,但想知道为什么会出现这个9。
注意:更改seq后
ala
ile
val
ser
重新运行相同的代码后,fileName 变成了"alaK"
。不再是数字9,但仍然是一个错误的字符。
memcpy
对以 null 结尾的字符串一无所知,它只了解字节范围。 - nategoosefileName[3]
改为'\0'
,因为[0]
、[1]
和[2]
分别指代a
、l
和a
。 - dreamlax