c語言strncpy函數從哪開始復制?
原型:char * strncpy(char *dest, char *src, size_t n); 功能:將字符串src中最多n個字符復制到字符數組dest中(它并不像strcpy一樣遇到NULL就開始復制,而是等湊夠n個字符才開始復制),返回指向dest的指針。 說明: 如果n > dest串長度,dest棧空間溢出產生崩潰異常。 否則: 1)src串長度<=dest串長度,(這里的串長度包含串尾NULL字符) 如果n=(0, src串長度),src的前n個字符復制到dest中。但是由于沒有NULL字符,所以直接訪問dest串會發生棧溢出的異常情況。 如果n = src串長度,與strcpy一致。 如果n = dest串長度,[0,src串長度]處存放src字串,(src串長度, dest串長度]處存放NULL。 2)src串長度>dest串長度 如果n =dest串長度,則dest串沒有NULL字符,會導致輸出會有亂碼。如果不考慮src串復制完整性,可以將dest最后一字符置為NULL。 綜上,一般情況下,使用strncpy時,建議將n置為dest串長度(除非你將多個src串都復制到dest數組,并且從dest尾部反向操作),復制完畢后,為保險起見,將dest串最后一字符置NULL,避免發生在第2)種情況下的輸出亂碼問題。當然嘍,無論是strcpy還是strncpy,保證src串長度 #include #include main() { char a[]="uewreuwiurweu"; char b[100]; strncpy(b,a,1); b[1]='\0'; puts(b); system("pause"); }