實現常用字串處理函式(不呼叫庫函式)

2021-07-13 08:53:28 字數 2954 閱讀 6707

描述:c語言中對於字串型別並未定義,但存在許多有關字串的庫函式。

例如:strstr(在原串中匹配子串)strcpy(將原串內容拷貝到目標串中),

strncpy(

原串內容拷貝到目標串---

可控拷貝數), 

strcmp(比較兩個字串的內容),strcat(字串的追加)

等等,我們可以自己編寫程式實現以上功能的函式,而不呼叫庫函式。可以對照庫函式進行學習,提高自身的程式設計能力。

1、模擬strcpy函式(複製字串)

#include#include#include#includechar * my_strcpy(char *dest, const char *src)

int main()

2、模擬實現strncpy函式(字串複製-----可控複製位元組數量)

#include#include#include#includechar *my_strncpy(char *dest, const char *src, size_t count)

*dest = '\0';//字串最後要加上'\0'

return ret;

}int main()

3、模擬strcmp函式(比較兩個字元/字串大小)

#include#include#includeint my_strcmp(const char *dest, const char *src)

if (*(unsigned char*)dest == '\0')

ret = 0;//*dest為0時,表示比較完了,兩個字串相等,返回0

else

ret = *(unsigned char*)dest - *(unsigned char*)src;//兩個字串不等返回兩個字串的差(強制轉換型別)

return ret;

}int main()

4、模擬實現strncmp函式(字串比較------可控比較位元組數量)

#include#include#include#includeint my_strncmp(const char *str1, const char *str2,size_t count)

if (count == 0)//count=0表示比較完成,兩個字串相等

ret = 0;

else

ret = *(unsigned char*)str1 - *(unsigned char*)str2;//注意此處需要強制型別轉換

return ret;

}int main()

5、模擬strcat函式(追加/合併字串)

#include#include#include#includechar * my_strcat(char *dest, const char *src)

int main()

6、模擬實現strncat函式(字串追加-------可控追加位元組數量)

#define _crt_secure_no_warnings//使用scanf時需要加在標頭檔案(vs2013中)

#include#include#include#includechar *my_strncat(char *dest,char *src,int count)

int main()

7、模擬實現strstr函式(

判斷乙個字串是不是另乙個字串的子字串

#include#include#include#includechar *my_strstr(const char *str1,const char *str2)

if (*p2 == '\0')//成功匹配p2中每乙個字元,返回p(子字串開始處)

return p;

p++;//p1和p2匹配沒成功,p1指向下乙個字元,重新與p2進行匹配

} return null;

}int main()

上述程式執行結果為:cdefgh

8、模擬實現memset函式(記憶體賦值或資料重置-----可控賦值位元組數量)

#include#include#include//memset作用是在一段記憶體塊中填充某個給定的值,它對較大的結構體或陣列進行清零操作的一種最快方法

void *my_memset(void *dest, int c, size_t count)

return dest;

}int main()

;//memset是按位元組賦值

int len = sizeof(arr) / sizeof(arr[0]);

int i;

my_memset(arr, 0, len);

for (i = 0; i < len; i++)

system("pause");

return 0;

}

9、模擬實現memcmp函式(記憶體中的內容比較大小-----可控比較位元組數量)

#include#include#includeint my_memcmp(const void *p1, const void *p2, size_t count)

} if (count == 0)

ret = 0;

else

ret = *(unsigned char *)dest - *(unsigned char *)src;;

return ret;

}int my_memcmp(const void *s1,const void *s2,size_t count)  

int main()

本文出自 「scen」 部落格,請務必保留此出處

常用字串處理函式

1626 5 劉小銘總結 2016年10月19日 連續19天總結 內容 a 一句話概括今日目標完成情況 常用字串處理函式 80 b 具體內容 昨天看了string字串那一節課,今天看了書上的常用字串處理函式,並沒有看見昨天所使用的那一種。尷尬 今天呢,看了一下,常用字串處理函式,有複製 貼上 比較 ...

linux c常用字串處理函式

一 puts 名稱 puts 功能 向顯示器輸出字串。標頭檔案 include 函式原形 int puts const char s 引數 s 字串 返回值 成功返回輸出的字元數,失敗返回eof put函式與printf函式在字串輸出中的區別 puts在輸出字串時,遇到 0 會自動終止輸出,並將 0...

linux c常用字串處理函式

一 puts 名稱 puts 功能 向顯示器輸出字串。標頭檔案 include h 函式原形 intputs const char s 引數 s 字串 返回值 成功返回輸出的字元數,失敗返回eof put函式與printf函式在字串輸出中的區別 puts在輸出字串時,遇到 0 會自動終止輸出,並將 ...