C/C++中的strncpy()函數功能為將第source串的前n個字符拷貝到destination串,原型為:
char * strncpy ( char * destination, const char * source, size_t num );
各個參數的含義顯而易見,其中返回值與destination相同。
這個函數會出現三種情況:
1、num<source串的長度(包含最后的'\0'字符):那么該函數將會拷貝source的前num個字符到destination串中(不會自動為destination串加上結尾的'\0'字符);
2、num=source串的長度(包含最后的'\0'字符):那么該函數將會拷貝source的全部字符到destination串中(包括source串結尾的'\0'字符);
3、num>source串的長度(包含最后的'\0'字符):那么該函數將會拷貝source的全部字符到destination串中(包括source串結尾的'\0'字符),並且在destination串的結尾繼續加上'\0'字符,直到拷貝的字符總個數等於num為止。
[例]
設有如下聲明,注意此時source串的長度為6(包含最后的'\0'字符):
char destination[] = "********************"; // destination串為: "********************0"
cosnt char *source = "-----"; // source串為: "-----0"
情形1:如果執行如下語句:
strncpy( destination, source, 5 );
那么destination的前5個字符將會被'-'替換,即(以'0'表示'\0'字符):
destination串為: "-----***************0"
情形2:如果執行如下語句:
strncpy( destination, source, 6 );
那么destination的前6個字符將會被source的前6個字符替換,即(以'0'表示'\0'字符):
destination串為: "-----0**************0"
情形3:如果執行如下語句:
strncpy( destination, source, 10 );
那么destination的前6個字符將會被source的前6個字符替換,並且會在后面補4個'\0',即(以'0'表示'\0'字符):
destination串為: "-----00000**********0"
[參考資料]
1. http://www.cplusplus.com/reference/clibrary/cstring/strncpy/;
2. http://en.cppreference.com/w/cpp/string/byte/strncpy (這個示例程序很好)。
[done]
