一:對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.監視結果
未拷貝前的arr2數組 拷貝後的arr2數組
3.運作結果
三:模拟實作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數組 拷貝後的brr數組
3.運作結果
四:對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個字元。