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

40
在C语言中,如何通过起始和结束索引复制字符串,以便只复制部分字符串(从起始索引到结束索引)?
这类似于'C字符串复制'函数strcpy,但是有一个起始和结束索引。
3个回答

83

使用strncpy

例如:

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

假设您已经:

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

2
"abc"中获取abc,你需要这样做:strncpy(dest, src + 1, strlen(src) - 2);。这应该是被接受的答案。 - gsamaras

25

你有查看过strncpy吗?

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

你必须认识到beginend实际上定义了一个num字节数,用于从一个地方复制到另一个地方。


3
正如我在之前的回答中所提到的,几乎没有任何合理的问题可以用 strncpy 这个函数来解决。原文链接:https://dev59.com/TnE85IYBdhLWcg3wNgvk#2889483 - Jerry Coffin

13

只需使用memcpy

如果目标不够大,strncpy将不会以空字符结尾。如果目标相对于源非常巨大,strncpy在字符串后面就会用空字符填充目标。strncpy是无意义的,不适合复制字符串。

strncpy类似于memcpy,但它会在源中看到空字符时,将目标填充为null。它对于字符串操作绝对没有用处。它是用于固定长度0填充记录的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接