10

假设我有 2 个字符串

char str_cp[50],str[50];
str[]="how are you"  

我想将第二个单词 ex "are" 放入另一个名为 str_cp 的字符串中,所以如果我使用

printf("%s ,%s",str,str_cp); 

会像

how are you 
are 

我怎样才能做到这一点?(我尝试了 strncpy 函数,但它只能从字符串的开头复制特定字符)有没有办法使用指向字符串第 4 个字符的指针并在 strncpy 函数中使用它来复制前 3 个字符但是起点是第四个字符?

4

1 回答 1

21

我尝试了 strncpy 函数,但它只能从字符串的开头复制特定字符

strcpy函数族将从您告诉它复制的点开始复制。例如,要从第五个字符开始复制,您可以使用

strncpy(dest, &src[5], 3);

或者

strncpy(dest, src+5, 3); // Same as above, using pointer arithmetic

请注意,除非您击中源字符串的末尾,strncpy否则不会为您终止字符串:

如果 source 比 num 长(因此,在这种情况下,destination 可能不是以 null 结尾的 C 字符串),则不会在目标末尾隐式附加空字符。

您需要自己对结果进行空终止:

strncpy(dest, &src[5], 3);
dest[3] = '\0';
于 2012-12-26T14:38:22.047 回答