1. 程式人生 > >string庫之模擬實現strcpy與strncpy

string庫之模擬實現strcpy與strncpy

原型:

     C庫string.h中strcpy函式

描述:

     C 庫函式 char *strcpy(char *dest, const char *src) 把 src 所指向的字串複製到 dest。

引數:

    dest指向用於儲存複製內容的目標陣列。src指向要複製的字串。

返回值:

    返回一個指向最終的目標字串dest的指標。

模擬實現strcpy:

char *my_strcpy(char *dest, const char *src)
{
	char *start= dest;

	assert(NULL != dest);
	assert(NULL != src);

	while (*dest++ = *src++)//一直向後移動,當*src指向'\0'停止。
		;

	return start;
}


原型:

    C庫函式string.h中strncpy函式

描述:

    C 庫函式 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字串複製到 dest,最多複製 n 個字元。當 src 的長度小於 n 時,dest 的剩餘部分將用空位元組       填充。

引數:

    dest:指向用於儲存複製內容的目標陣列。

    src:指向要複製的字串。

    n:要從源中複製的字元數。

返回值:

    返回一個指向最終的目標字串dest的指標。

模擬實現strncpy:

char *my_strncpy (char * dest, const char * src, size_t n)
{
        char *start = dest;	//儲存dest值,在函式結束後返回

        while (n && (*dest++ = *src++))//一直拷貝,直到n為0或src全部拷貝完畢
			n--;

        if (n)            //如果count>0,表示src長度小於等於n,需要給dest新增空位元組
			while (--n) //使用前置--,是因為在跳出while迴圈後,count少減一次
					*dest++ = '\0';

        return start;
}


相關推薦

string模擬實現strcpystrncpy

原型:      C庫string.h中strcpy函式 描述:      C 庫函式 char *strcpy(char *dest, const char *src) 把 src 所指向的字串複製到 dest。 引數:     dest指向用於儲存複製內容的目標陣列。s

string模擬實現strchr、strrchrmemchr

原型:     C庫string.h中的strchr函式 描述:     C 庫函式 char *strchr(const char *str, int c) 在引數 str 所指向的字串中搜索第一次出現字元 c(一個無符號字元)的位置。 引數:     str:要被檢索的

自己實現strcpystrncpy

turn size_t stream rcp name ret ace color har #include <iostream> #include <string.h> using namespace std; char* Mystrcp

字串函式---strcpy()strncpy()詳解及實現

一、strcpy()與strncpy()     strcpy():strcpy(dest,src);    strcpy把src所指向以'\0'結尾的字串複製到dest所指的陣列中,返回指向dest的指標。     當sizeof(dest)>=sizeof(src)

strcpystrncpy

char 1.0 () 結束 trac strncpy col 內存區域 clas strcpy 已經過時了,公司一面一般不用了。 strncpy多了一個參數n,也就是復制的字節數,2個函數原型例如以下: char*strcpy(char *

ASP.NET沒有魔法——ASP.NET MVC 數據EF實體類數據結構

類之間的關系 context 模型 rst 例子 style 方法 eid 一個   大家都知道在關系型數據庫中每張表的每個字段都會有自己的屬性,如:數據類型、長度、是否為空、主外鍵、索引以及表與表之間的關系。但對於C#編寫的類來說,它的屬性只有一個數據類型和類與類之間的關

python 操作mysql數據模擬購物系統登錄及購物

定義 普通用戶 [0 elif 選擇 oat value 退出程序 查看 python 操作mysql數據庫之模擬購物系統登錄及購物,功能包含普通用戶、管理員登錄,查看商品、購買商品、添加商品,用戶充值等。 mysql 數據庫shop 表結構創建如下: cr

模擬實現strcpy函數

c++ span printf style use while strcpy r++ abc 模擬實現strcpy函數 a、代碼簡練的 1 #include<stdio.h> 2 #include<assert.h> 3 4 //模擬實現

模擬實現strcpy函式功能(優化改進)

strcpy函式,字串拷貝函式,傳入兩個引數,將第二個引數的值拷貝到第一個中去。 首先,給出一個普通的程式碼: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> void

模擬實現strcpy和strcat的函式實現

#include<stdio.h> #include<Windows.h> #include<assert.h> char* my_strcpy(char* dest, const char* src) { char *ret1 = dest;//記錄目標字

No.25 經典筆試題(二):模擬實現strcpy,strcat,strcmp,strstr,memcpy

直接上程式碼: 1. //模擬實現strcpy #include <stdio.h> #include <assert.h> char* my_strcpy(char* dest, const char* src) { char* ret = dest ;

模擬實現strcpy 和strcat

模擬實現strcpy : char *My_strcpy(char *dest, const char *src) { char *ret = dest; assert(NULL != dest); assert(NULL != src); while((*dest++ = *src++

string類的模擬實現

class String { public: typedef char* Iterator; public: String() { } String(const char* str) { if (str == nullptr) { assert(str); ret

c語言模擬實現strcpy

//模擬實現strcpy    概念:              //strcpy(str1,st2)將陣列str2的值複製到陣列str1   解題思路:整體比較簡單                    1> 將數組裡的值一個個拷貝到另個數組;       

【C語言】模擬實現strcpy strcat strstr strcmp

模擬實現strcpy(字串拷貝) 這道題,是將原字串的內容拷貝到目標字串中去,一個字元一個字元的拷貝直到遇到 ‘\0’ ,將它也拷貝過去後停止。  #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include&

vue自行實現派發廣播-dispatchbroadcast

function roo click options 什麽 為什麽 一個 fin fault 要解決的問題 主要針對組件之間的跨級通信 為什麽要自己實現dispatch與broadcast? 因為在做獨立組件開發或庫時,最好是不依賴第三方庫 為什麽不使用provide與in

[c語言]對各種字串函式的實現strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove

1.模擬實現strcpy //1.模擬實現strcpy(字串拷貝) #include<stdio.h> #include<assert.h> char * my_strcpy(char *dest,const char *str) {

模擬實現strcpy模擬實現strlen、模擬實現strstr函式

1.模擬實現strcpy(strcpy函式的功能是實現字串的複製) 方法一: 演算法思想:定義兩個指標變數dest、str,分別指向目的字串、原字串,只要str指向的內容不為\0,完成複製,返回目的字串的首地址 注意: (1)將原字串指標定義為 const型別(只讀,不可修

好厲害的edge js 實現C node js互操作

封裝 task net div 特性 tel write null ofo 最近在網上閑逛,又發現個好東西,edge.js 這個庫可以讓node.js 調用 C# 的代碼,還可以讓 C# 調用node.js 的代碼,看到這裏,只問你服不服?反正我是很驚嘆了…… 不過

Android 通訊EventBus實現廣播Activity通訊

本章節講述 如何利用EventBus 實現Android廣播與Activity通訊  根據廣播接收到的內容更新Activity資料本章節中的廣播是極光推送操作別名和標籤的廣播程式碼1:@Override