天天看點

strncpy函數的調用與模拟實作!!

一:對strncpy的簡單介紹

1.調用形式:

char * strncpy ( char * destination, const char * source, size_t num )

2.拷貝num個字元從源字元串到目标空間。

3.如果源字元串的長度小于num,則拷貝完源字元串之後,在目标的後邊追加0,直到num個。

二:調用strncpy函數

1.程式代碼
#include<stdio.h>
#include<string.h>


int main()
{
	char arr1[]="I am a good boy!";
	char arr2[20];
	int n=strlen(arr1);
	printf("%s\n",strncpy(arr2,arr1,n+1));    //"n+1 "的目的是将' \0 '拷貝到目标串
	return 0;
}
           

2.監視結果

strncpy函數的調用與模拟實作!!
未拷貝前的arr2數組
strncpy函數的調用與模拟實作!!
拷貝後的arr2數組
strncpy函數的調用與模拟實作!!

3.運作結果

strncpy函數的調用與模拟實作!!

三:模拟實作strncpy

1.程式代碼

#include<stdio.h>
#include<string.h>     //模拟實作strncpy

void my_strncpy( char *brr,
				const char *arr,
				int n)
{
	 char* p= brr;
	 const char* q= arr;
	 while(n--)
	 {
		 *p=*q;
		 p++;
		 q++;
	 }
	 printf("%s",brr);

}


int main()
{
	const char arr[]="I am a good boy!";
	char brr[20];
    my_strncpy(brr,arr,strlen(arr)+1);       //strlen(arr)+1目的是将 arr數組的' \0 '拷貝給brr數組
	printf("\n");
	return 0;
}

           

2.監視結果

未拷貝前的brr數組
strncpy函數的調用與模拟實作!!
拷貝後的brr數組
strncpy函數的調用與模拟實作!!

3.運作結果

strncpy函數的調用與模拟實作!!

四:對strncpyd的補充說明

對strncpy調用的介紹

strncpy()用來複制字元串的前n個字元,其原型為: char * strncpy(char *dest, const char *src, size_t n);

【參數說明】dest 為目标字元串指針,src 為源字元串指針。

strncpy()會将字元串src前n個字元拷貝到字元串dest。

不像strcpy(),strncpy()不會向dest追加結束标記’\0’,這就引發了很多不合常理的問題,将在下面的示例中說明。

注意:src 和 dest 所指的記憶體區域不能重疊,且 dest 必須有足夠的空間放置n個字元。

繼續閱讀