给定起始和结束索引,如何在C中复制字符串的一部分?
在C中,如何复制带有开始和结束索引的字符串,以便只对字符串进行部分复制(从开始索引到结束索引)?
这就像’C string strcpy
,但带有begin和end索引。
你检查过strncpy吗?
char * strncpy(char * destination,const char * source,size_t num);
您必须意识到begin和end实际上定义了要从一个地方复制到另一个地方的字节数。
使用strncpy
例如
strncpy(dest, src + beginIndex, endIndex - beginIndex);
假设你这样做
- validation
dest
足够大。 -
endIndex
大于beginIndex
-
beginIndex
小于strlen(src)
-
endIndex
小于strlen(src)
只需使用memcpy 。
如果目标不够大, strncpy将不会为null终止。 如果目标与源相比是巨大的, strncpy只是在字符串后用空值填充目标。 strncpy没有意义,不适合复制字符串。
strncpy就像memcpy,只要它在源中看到一个就用空值填充目的地。 对字符串操作来说绝对没用。 这是固定的0填充记录。