1. 程式人生 > 實用技巧 >strncpy庫函式模擬實現

strncpy庫函式模擬實現

//第一次嘗試:
#define
_CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> char* myStrncpy(char* destin, const char* source, size_t num) { if (destin == NULL || source == NULL) { return NULL; } int i = 0; int j = 0; for (; i < num; i++) {
if (source[j] == '\0') { destin[i] = '0'; } else { destin[i] = source[i]; j++; } } destin[j] = '\0'; return destin; } int main() { printf("請輸入字串:"); char str1[1024] = { 0 }; scanf("%s", str1); printf("請輸入要拷貝的字串:");
char str2[1024] = { 0 }; scanf("%s", str2); printf("輸入要拷貝幾個字元:"); size_t num = 0; scanf("%d", &num); myStrncpy(str1, str2, num); //strncpy(str1, str2, num); printf("%s\n", str1); return 0; }
//模擬實現strncpy函式:char* (char* destin,const char* source,size_t num);
//(c/c++)複製字串src中的內容(字元,數字、漢字....)到字串dest中,複製多少由size_tn的值決定。
//如果src的前n個字元不含NULL字元,則結果不會以NULL字元結束。如果n<src的長度,只是將src的前n個字元複製到dest的前n個字元,
//不自動新增'\0',也就是結果dest不包括'\0',需要再手動新增一個'\0'。如果src的長度小於n個位元組,則以0填充dest直到複製完n個位元組。
//程式碼實現很簡單,需要注意引數合法性檢驗