函數:將字符串src中最多n個字符復制到字符數組dest中(n個字符四舍五入後才開始復制),返回壹個指向dest的指針。
描述:如果n > Dest字符串長度,Dest堆棧空間溢出產生壹個崩潰異常。
(1)src字符串長度< =dest字符串長度,(其中字符串長度包括字符串末尾的空字符)如果n=(0,src字符串長度),則將src的前n個字符復制到dest。但是,因為沒有空字符,所以在直接訪問dest字符串時會出現堆棧溢出的異常。如果n = src字符串長度,則與strcpy壹致。如果n = dest字符串長度,src字符串存儲在[0,src字符串長度],NULL存儲在(src字符串長度,dest字符串長度)。
(2)src字符串長度>;Dest字符串長度如果n =dest字符串長度,dest字符串沒有空字符,這將導致亂碼輸出。如果不考慮src字符串復制的完整性,可以將dest的最後壹個字符設置為NULL。
綜上所述,壹般情況下,使用strncpy時,建議將n設置為dest字符串的長度(除非將多個src字符串復制到dest數組中,並從dest的末尾開始反轉)。復制後,為了安全起見,將dest字符串的最後壹個字符設置為NULL,以避免第二種情況下的輸出亂碼問題。當然,不管是strcpy還是strncpy,保證src字符串長度< dest字符串長度是最重要的。
2.常規:
#包含?& ltstdio.h & gt
#包含?& ltstring.h & gt
#包含?& ltstdlib.h & gt
主()
{
夏爾?a[]= " uewreuwiurweu ";
夏爾?b[100];
strncpy(b,a,1);//將A中的第壹個字符復制到b中。
b[1]= ' \ 0 ';
賣出(b);
系統(“暫停”);
}