给定开始和结束索引,如何在 C 中复制字符串的一部分?
Posted
技术标签:
【中文标题】给定开始和结束索引,如何在 C 中复制字符串的一部分?【英文标题】:Given a starting and ending indices, how can I copy part of a string in C? 【发布时间】:2011-09-06 12:08:22 【问题描述】:在 C 中,如何复制带有开始和结束索引的字符串,以便只复制部分字符串(从开始索引到结束索引)?
这类似于“C 字符串复制”strcpy
,但具有开始和结束索引。
【问题讨论】:
【参考方案1】:使用strncpy
例如
strncpy(dest, src + beginIndex, endIndex - beginIndex);
这假设你已经
-
验证
dest
足够大。
endIndex
大于 beginIndex
beginIndex
小于 strlen(src)
endIndex
小于 strlen(src)
【讨论】:
要从"abc"
获取abc
,您可以:strncpy(dest, src + 1, strlen(src) - 2);
。这应该是公认的答案。【参考方案2】:
只需使用memcpy。
如果目标不够大,strncpy 不会空终止。如果目标与源相比很大,strncpy 只会在字符串后用空值填充目标。 strncpy 没有意义,不适合复制字符串。
strncpy 与memcpy 类似,不同之处在于它会在源中看到一个空值后用空值填充目标。对于字符串操作绝对没用。它用于修复 0 填充记录。
【讨论】:
【参考方案3】:你检查过strncpy吗?
char * strncpy ( char * 目标, const char * 源, size_t num );
您必须意识到 begin 和 end 实际上定义了要从一个地方复制到另一个地方的 num 个字节。
【讨论】:
正如我在之前的回答中所指出的,对于strncpy
是一个好的答案,几乎没有任何合理的问题。 ***.com/questions/2889421/…以上是关于给定开始和结束索引,如何在 C 中复制字符串的一部分?的主要内容,如果未能解决你的问题,请参考以下文章
字符串的一部分可以复制到C中的另一个字符串吗?但复制的开始索引不为零[关闭]