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

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

这就像’C string strcpy ,但带有begin和end索引。

你检查过strncpy吗?

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

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

使用strncpy

例如

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

假设你这样做

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

只需使用memcpy 。

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

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