2012-12-26 142 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

相關問題