C語言中自己寫幾個簡單的庫函式

2021-07-11 00:22:50 字數 1511 閱讀 7671

在c語言的學習中我們總會遇到一些看似看簡單的問題,比如求字串的長度,判斷乙個字串中是否包含乙個給定的子字串,又或者怎麼將乙個字串逆序輸出,甚至是部分逆序輸出,這些問題看似都挺簡單,因為我們早已經習慣了使用庫函式,求乙個字串的長度,用strlen()函式,不需要敲幾個**就可以得到結果,當然這也沒什麼問題,畢竟庫函式設計出來就是給人用的,不過有時候你若閒沒什麼事情做得話,不妨去看看庫函式,它們是如何定義的,它們又是如何使用的,庫函式中的**都是經過了驗證,並且是通過一種很簡便的**形式給出來的,因此這樣的**值得我們多去看一看!當然如果你能在沒事的時候自己想著去實現以下一些庫函式,對於你而言還是很有用的,畢竟我們可以模仿一下大師是如何寫**的。

下面是兩個小例子:(要求不能使用庫函式),既然給出了要求不能使用庫函式,最簡單的方法就是自己實現乙個庫函式,這也是所有人都會想到的乙個方法。

首先這是一道關於查詢子字串的例子,原題是在螢幕上輸入內容,如果輸入的一行中包含有乙個給定的子字串的話,就將這一行內容在輸出一遍,否則就不輸出。(不能使用庫函式strstr())

以下是我測試用的**:

#include#include#define line_max 100

const char * find_sub_str(const char *str,const char * substr)

while (*pstr)

if (*psub == '\0')

else

}return null;

}int get_arr(char arr_line, int limit)

if (ch=='\n')

arr_line[i] = '\0';

return i;

}int main()

} return 0;

}

測試結果如下:

接下來是一道字串逆序的問題,但又不是單純的字串逆序,原題是:將給輸入student  a  am  i ,要求輸出結果為i  am  a  student ,要求不能夠使用庫函式。

此題有一種巧妙地思路就是先將原來的字串整個逆序,得到i ma  a  tneduts,然後將裡面的每乙個的單詞逆序輸出,為了方便我們可以封裝乙個逆序字串的函式,第一次呼叫逆序整個字串,之後呼叫逆序裡面的每乙個單詞。

以下是我測試用的**:

#include#includevoid reverse_str(char *start, char *end)                   //定義逆置字串函式

{ char temp ;

assert(start );

assert(end );

while (start

此題採用先整體在部分的思想,在以後的學習中會用到。具體的實現倒是不難,逆置的實現說到底還是交換的思想,,定義兩個變數left和right,分別指向左邊和右邊,第乙個內容和最後乙個內容交換,一直到交換到left大於等於right。將乙個大問題分解成乙個個小問題也是一種解題的思想!

C語言中庫函式總結

sprintf include include intmain atoi 範圍 0 9,大於這個範圍,例如 a 97 a 65,返回值為0 123c5 返回值為123。include include include intmain malloc 安全程式設計規範是否要判斷分配之後的返回值 經常用於字...

C語言中String庫函式

c語言中string庫函式 以下內容摘自 c程式設計教程 美 h.m.deitel p.j.deitel著,薛萬鵬等譯,機械工業出版社。void memccpy void dest,const void src,int c,size t n 從src所指向的物件複製n個字元到dest所指向的物件中。...

C語言中字元陣列庫函式

以下內容摘自 c程式設計教程 美 h.m.deitel p.j.deitel著,薛萬鵬等譯,機械工業出版社。void memccpy void dest,const void src,int c,size t n 從sr 所指向的物件複製 個字元到 est所指向的物件中。如果複製過程中遇到了字元c則...