字串函式實現

2021-07-05 09:20:39 字數 3070 閱讀 7076

本文介紹了strcpy,strcnpy,atoi,itoa,strcmp,strncmp,字串逆置的c語言實現(比較簡單,或許存在bug)

1.strcpy,strncpy:

2.字串的逆置:

void reverse(char *s)

q--;//這個時候q是指向'/0'的,所以需要往前移動一下

while(q>p)//交叉移動指標,知道p和q交叉

概括:就是用2個指標加乙個臨時變數來實現,乙個指向尾,乙個指向頭,然後通過乙個中間變數的儲存資料,進行資料交換,然後迴圈,尾指標往前走,首指標往後走,直到位置交叉。

3.itoa:(整數轉化為字串)

概括:首先判斷是正數還是負數,正數先把這個數的每一位求出來然後加上乙個'0',它就會**的變成乙個字元,用乙個陣列儲存,迴圈,直至每個數都求出來,不過陣列裡面的陣列都是逆置的,然後再將這個陣列逆置一下即可。如果是負數,就要先把這個數變成正數先將資料儲存下來,最後再加上'-'這個符號,再逆置陣列即可。

4.字串轉化為整數:

概括:首先判斷有沒有『-』這個符號,沒有的話就把陣列裡面的乙個個輸剪去'0',就會**的變成整型資料,然後通過乘10累加返回sum,如果有'-',就先把指標遍歷到下一位,然後按照前面的做法,不過最後返回-sum;

5.字串比較大小(strcmp,strncmp)

#include #include int my_strcmp(char *dest,char *source)

return (*dest-*source);

} void main()

執行結果:

[lingyun@localhost c_example]$ gcc strcmp.c 

[lingyun@localhost c_example]$ ./a.out 

-1

#include #include int  my_strncmp(char *dest,char *source,int n)

return(*dest-*source);

} void main()

執行結果: 

[lingyun@localhost c_example]$ gcc strncmp.c 

[lingyun@localhost c_example]$ ./a.out 

再貼一下2個排序的方法:

選擇排序:

#include void main()

if(k!=i)

}for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");

}

分組排序:

void sort(int *a, int left, int right)

int i = left;

int j = right;

int key = a[left];

while(i < j) /*控制在當組內尋找一遍*/

a[i] = a[j];

/*找到乙個這樣的數後就把它賦給前面的被拿走的i的值(如果第一次迴圈且key是

a[left],那麼就是給key)*/

while(i < j && key >= a[i])

/*這是i在當組內向前尋找,同上,不過注意與key的大小關係停止迴圈和上面相反,

因為排序思想是把數往兩邊扔,所以左右兩邊的數大小與key的關係相反*/

a[j] = a[i];

}a[i] = key;/*當在當組內找完一遍以後就把中間數key回歸*/

sort(a, left, i - 1);/*最後用同樣的方式對分出來的左邊的小組進行同上的做法*/

sort(a, i + 1, right);/*用同樣的方式對分出來的右邊的小組進行同上的做法*/

/*當然最後可能會出現很多分左右,直到每一組的i = j 為止*/

}

int main()

我個人認為快速排序就是利用了乙個2分法的思想,先找乙個基點把大於它的和小於它的分在兩邊,然後再利用同樣的方法去分別去分左邊的部分和右邊的部分。

小知識:對於字元陣列的賦值;

char str[ ]=; \0是一定要加的不然strlen的時候大小是隨即的,\0和0是一樣的

這樣定義是最規範的

字串函式實現

1.memmove void memmove void dest,const void src,size t count memmove用於從source拷貝count個字元到dest,如果目標區域和源區域有重疊的話,memmove能夠保證在源串覆蓋之前將重疊區域的位元組拷貝到目標區域中 void ...

字串函式的實現

字串函式實現 ps 1.字元 null 0 表示ascii 碼為0 的字元 null 空字元 2.char s1 nizaye char s2 opzayebb s1 s2 s1 s2 s1 s2 執行會出現錯誤,char s1 nizaye 相當與 const char s1 nizaye 定義了...

字串操作函式實現

該函式的實現如下 void memcpy void dst,const void src,size t n return dst 該函式的實現如下 void memmove void dst,const void src,size t n 若dst的位址與src位址部分重疊 則從高位址開始複製 el...