2012-12-26 144 views
9

可以说我有2个字符串从字符串复制特定字符到另一个字符串

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

,我希望把第二个字恩“是”到名为str_cp另一个字符串,所以如果我使用

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

会像

how are you 
are 

我该怎么办呢? (我试过strncpy函数,但它只能从字符串的开始拷贝特定字符) 有什么方法可以使用指向字符串第4个字​​符的指针,并在strncpy函数中使用它来复制前3个字符但开始是第四个角色?

回答

17

我试图strncpy()函数的功能,但它可以从beggining复制字符串

strcpy家庭的功能将从你告诉它复制的复制点只有特定的字符。例如,从第五个字符复制的,你可以使用

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

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

注意strncpy空终止字符串你,除非你打的结束源串:

没有空字符在目的端隐含所附如果源小于NUM(因此更长的时间,在这种情况下,目的地毫安y不是以null结尾的C字符串)。

你需要自己用空字符结束的结果:

strncpy(dest, &src[5], 3); 
dest[3] = '\0'; 
+0

谢谢你。我认为strncopy可以从字符串 – user1809300

+2

@ user1809300 C字符串函数的起点才开始不知道在哪里了字符串实际上开始:对他们来说,字符串只是一个指向内存的指针。他们认为它开始于你告诉他们它所在的位置,所以如果这是你所需要的,你可以自由地将它们传递给字符串中间的指针。 – dasblinkenlight

+0

我还有一个问题:如果我在str_cp中保存单词“are”,并且我使用另一次strncpy从str中复制最后3个字符,例如str_cp中的“you”,然后在str_cp中,“are”将被删除,将只有新词“你”?或者我需要释放这部分内存,然后复制到str_cp – user1809300

相关问题