[C/C++] 關於strncpy函數


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]





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM