【问题标题】:Given a starting and ending indices, how can I copy part of a string in C?给定开始和结束索引,如何在 C 中复制字符串的一部分?
【发布时间】:2011-09-06 12:08:22
【问题描述】:

在 C 中,如何复制带有开始和结束索引的字符串,以便只复制部分字符串(从开始索引到结束索引)?

这类似于“C 字符串复制”strcpy,但具有开始和结束索引。

【问题讨论】:

    标签: c string substring


    【解决方案1】:

    使用strncpy

    例如

    strncpy(dest, src + beginIndex, endIndex - beginIndex);
    

    这假设你已经

    1. 验证dest 足够大。
    2. endIndex 大于 beginIndex
    3. beginIndex 小于 strlen(src)
    4. endIndex 小于 strlen(src)

    【讨论】:

    • 要从"abc" 获取abc,您可以:strncpy(dest, src + 1, strlen(src) - 2);。这应该是公认的答案。
    【解决方案2】:

    只需使用memcpy

    如果目标不够大,strncpy 不会空终止。如果目标与源相比很大,strncpy 只会在字符串后用空值填充目标。 strncpy 没有意义,不适合复制字符串。

    strncpymemcpy 类似,不同之处在于它会在源中看到一个空值后用空值填充目标。对于字符串操作绝对没用。它用于修复 0 填充记录。

    【讨论】:

      【解决方案3】:

      你检查过strncpy吗?

      char * strncpy ( char * 目标, const char * 源, size_t num );

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-23
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 2018-04-20
      • 2023-03-28
      • 2021-04-19
      相关资源
      最近更新 更多