假设我有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函数,但它只能复制字符串beggining中的特定字符) 是否有任何方法可以使用指向字符串第4个字符的指针,并在strncpy函数中使用它来复制前3个字符但是开始点是第4个字符?
答案 0 :(得分:21)
我尝试了strncpy函数,但它只能复制字符串
的前缀中的特定字符
strcpy
系列函数将从您指示复制的位置复制。例如,要从第五个字符开始复制,您可以使用
strncpy(dest, &src[5], 3);
或
strncpy(dest, src+5, 3); // Same as above, using pointer arithmetic
请注意,除非您点击源字符串的末尾,否则strncpy
将不 null - 终止字符串:
如果source长于num,则不会在目标的末尾隐式附加空字符(因此,在这种情况下,目标可能不是空终止的C字符串)。
您需要自行终止结果:
strncpy(dest, &src[5], 3);
dest[3] = '\0';