在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則...