给定开始和结束索引,如何在 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 );

您必须意识到 beginend 实际上定义了要从一个地方复制到另一个地方的 num 个字节。

【讨论】:

正如我在之前的回答中所指出的,对于 strncpy 是一个好的答案,几乎没有任何合理的问题。 ***.com/questions/2889421/…

以上是关于给定开始和结束索引,如何在 C 中复制字符串的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

字符串的一部分可以复制到C中的另一个字符串吗?但复制的开始索引不为零[关闭]

如何在 C# 中将数组的一部分复制到另一个数组?

是否可以匹配字符串中所有出现的模式,具有给定的开始和结束? [复制]

如何测试索引越界错误? [复制]

给定一个 Unix 时间戳,如何获得那一天的开始和结束?

获取给定周年、给定月份和给定周的开始和结束日期