在C中复制字符串的一部分

标签 c string

这看起来应该非常简单,但出于某种原因,我没有让它工作。我有一个名为 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/

相关文章:

c - 如何加载文件到链表c编程

If Else 条件中的Continue 语句给出无限循环

java - 获取一个字符串在另一个字符串中出现的次数

string - 方案:如何将字符转换为数字/字符串

c - array[1] 不起作用,而 array+1 起作用

FILE I/O 中的 C 程序搜索

c++ - MPI C 逐行发送矩阵到所有进程子进程 (MPI_COMM_SPAWN)

javascript - 从元素中获取单个类名作为字符串

c# - 在 C# 中,比较字符串与 null 和 ""返回 true 的最佳方法是什么

c - 为什么我的链接列表有错误的数据?