模擬實現不受限制的字串函式--C語言版
C語言中提供了許多十分好用的庫函式,一旦我們掌握了它們,我們使用C語言寫程式碼就會變得更加得心應手。
1.strlen
strlen函式就是計算字串的長度的,它會一直讀取到\0,它的返回值就是在字串中'\0' 前面出現的字元個數(不包括\0)。 而瞭解strlen的實現原理也會讓我們更好的理解程式碼
//模擬實現strlen
// 計算器版本
//#include<stdio.h>
//#include<assert.h>
//int my_strlen(const char *str)
//{
// assert(str);
// int count = 0;
// while (*str++ != 0)
// {
// count++;
// }
// return count;
//}
//
//int main()
//{
// char arr[] = {"abcdef"};
// int ret = my_strlen(arr);
// printf("%d", ret);
// return 0;
//}
當然,strlen絕對不止這一種寫法,如果各位想看,可以移步 strlen的三種模擬實現方法
2.stccpy
strcpy是將字串b複製到字串a上,其中源字串必須要以\0結束,並且目標字串必須要有足夠大的空間
#include<stdio.h>
#include<string.h>
void mine_strcpy(char* dest, char* sou)
{
while (*dest++ = *sou++)//當sou將\0傳給dest時,while裡面的值是0,自動結束了迴圈---既copy了\0
//又使迴圈停止
{
;
}
}
int main()
{
char arr1[] = "aaaaaaaaaaaaaa";
char arr2[] = "hello";
mine_strcpy(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
3.strcat
strcat是字串追加函式,目標字串必須要有足夠大的空間去容納原字串,並且原字串必須要以\0結尾 strcat的模擬實現:首先需要找到目標字串的\0位置,接著要在\0的位置,將要複製的字串複製過去即可。
#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strcat(char* dest, const char* src)
{
assert(dest && src);
char* ret = dest;
//1.找到目標字串的\0
while (*dest)
{
dest++;
}
//2.接著追加過去(包括\0)(就是strcpy的思路)
while (*dest++ = *src++)
{
;
}
return ret;
}
int main()
{
char arr1[50] = {"stay foolish,"};
char arr2[20] = {"stay hungry"};
//my_strcat(arr1, arr2);
printf("%s", my_strcat(arr1, arr2));//鏈式訪問
return 0;
}
4.strcmp
strcmp就是比較兩個字串的大小 strcmp的實現思路就是一個一個字元的進行比較,知道找到不一樣的或者全部一樣的為止
//模擬實現strcmp
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* p,const char* q)
{
assert(p && q);
while (*p == *q)
{
if (*p == '\0')//*q也為'\0'
{
return 0;
}
p++;
q++;
}
//if (*p > *q)
// return 1;
//else
//return -1;
return *p - *q;
}
int main()
{
char p[] = "abcd";
char q[] = "abe";
int ret = my_strcmp(p, q);
if (ret > 0)
printf("p>q\n");
else if (ret < 0)
printf("p<q\n");
else
printf("p==q\n");
return 0;
}
以上介紹的都是長度不受限制等函式, 歡迎關注,感謝大家的支援!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70030112/viewspace-2953163/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- c語言與字串相關的庫函式的模擬實現C語言字串函式
- C語言-字串函式的實現(五)之strstrC語言字串函式
- C語言-字串函式的實現(一)之strlenC語言字串函式
- 【C語言】常用的字串函式及相關函式的自我實現C語言字串函式
- 模擬實現字串函式strlen , strcpy ,strcmp字串函式
- C語言相關的基礎字串函式C語言字串函式
- C 語言實現泛型 swap 函式泛型函式
- strlen函式的模擬實現函式
- C語言的函式C語言函式
- C語言-記憶體函式的實現(一)之memcpyC語言記憶體函式memcpy
- C語言-記憶體函式的實現(二)之memmoveC語言記憶體函式
- C語言實戰!!!:商城系統模擬C語言
- c++字串查詢函式實現C++字串函式
- C語言 execve()函式C語言函式
- C語言常用函式C語言函式
- C語言qsort函式的使用C語言函式
- C語言函式sscanf()的用法C語言函式
- C語言之字串處理函式C語言字串函式
- C語言 函式指標C語言函式指標
- C語言基礎函式C語言函式
- 08. C語言函式C語言函式
- C語言函式呼叫棧C語言函式
- c語言模擬Python的命名引數C語言Python
- C語言字串C語言字串
- 作業系統:程式狀態轉換模擬,C語言實現作業系統C語言
- C語言解讀assert函式C語言函式
- C語言庫函式及示例C語言函式
- C#語言函式遞迴C#函式遞迴
- 字串相關函式的實現字串函式
- c語言函式指標的定義C語言函式指標
- 細節解析 JavaScript 中 bind 函式的模擬實現JavaScript函式
- 順序表的基本方法實現C語言版C語言
- C語言字串工具箱DIY之剔除字串首尾的空白字元的str_trim函式C語言字串字元函式
- C語言 - 字串拼接C語言字串
- 虛擬函式表-C++多型的實現原理函式C++多型
- C語言函式指標與回撥用函式C語言函式指標
- 【C語言】函式的概念和函式的呼叫(引數傳遞)C語言函式
- c語言快速排序(庫函式使用)C語言排序函式