2011-06-01 42 views

回答

12

你查过strncpy

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

你必须认识到,开始年底实际上定义了一个NUM字节从一个地方复制到另一个。

+0

正如我在前面的回答中指出的那样,“strncpy”是一个很好的答案几乎没有合理的问题。 http://stackoverflow.com/questions/2889421/how-to-copy-a-string-into-a-char-array-in-c-without-going-over-the-buffer/2889483#2889483 – 2011-06-01 17:45:43

+0

Hummm。谢谢@Jerry。 – karlphillip 2011-06-01 19:36:00

43

使用strncpy

例如,

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

这是假设你已经

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

+1编辑完成后,我很喜欢你的答案。 – karlphillip 2011-06-01 17:30:25

6

只需使用memcpy

如果目的地不够大,strncpy将不会终止。如果目的地与源相比较大,则strncpy只是在字符串之后用空值填充目的地。 strncpy是毫无意义的,不适合复制字符串。

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

相关问题