给定起始和结束索引,如何在C中复制字符串的一部分?

Jos*_*son 23 c string substring

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

这就像'C string copy' strcpy,但有一个开始和结束索引.

Bin*_*ier 55

使用strncpy

例如

strncpy(dest, src + beginIndex, endIndex - beginIndex);
Run Code Online (Sandbox Code Playgroud)

这假定你

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

  • 要从 `"abc"` 获取 `abc`,您需要执行:`strncpy(dest, src + 1, strlen(src) - 2);`。这应该是公认的答案。 (2认同)

kar*_*lip 17

你检查过strncpy吗?

char*strncpy(char*destination,const char*source,size_t num);

你必须认识到,开始结束实际上定义了一个NUM字节被复制,从一个地方到另一个地方.

  • 正如我在之前的回答中指出的那样,几乎没有合理的问题“strncpy”是一个好的答案。http://stackoverflow.com/questions/2889421/how-to-copy-a-string-into-a-char-array-in-c-without-going-over-the-buffer/2889483#2889483 (3认同)

小智 7

只需使用memcpy.

如果目标不够大,strncpy将不会为null终止.如果目标与源相比是巨大的,strncpy只是在字符串后用空值填充目标.strncpy毫无意义,不适合复制字符串.

strncpy就像memcpy,只要它在源中看到一个就用空值填充目的地.它对于字符串操作绝对没用.这是用0填充记录固定的.