模擬實現不受限制的字串函式--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語言-字串函式的實現(一)之strlenC語言字串函式
- C語言-字串函式的實現(五)之strstrC語言字串函式
- 【C語言】常用的字串函式及相關函式的自我實現C語言字串函式
- 模擬實現字串函式strlen , strcpy ,strcmp字串函式
- C語言實現字串拷貝函式的幾種方法C語言字串函式
- strlen函式的模擬實現函式
- c語言字串處理函式大全C語言字串函式
- C語言50題之模擬實現atof、atoiC語言
- C 語言實現泛型 swap 函式泛型函式
- C語言相關的基礎字串函式C語言字串函式
- C 語言中返回字串函式的四種實現方法字串函式
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- C語言的函式C語言函式
- C語言實戰!!!:商城系統模擬C語言
- javascript模擬實現函式過載JavaScript函式
- C語言常用字串操作函式總結C語言字串函式
- 【C語言】字串複製。(不能使用strcpy函式)C語言字串函式
- C語言-記憶體函式的實現(一)之memcpyC語言記憶體函式memcpy
- C語言-記憶體函式的實現(二)之memmoveC語言記憶體函式
- C語言模擬試題1C語言
- C語言模擬試題2C語言
- C語言模擬試題3C語言
- C語言模擬試題4C語言
- C語言模擬試題5C語言
- C語言模擬試題6C語言
- c++字串查詢函式實現C++字串函式
- C語言 execve()函式C語言函式
- C語言常用函式C語言函式
- 【C語言】編寫一個函式reverse_string(char * string) 實現:將引數字串中的字元反向排列。要求:不能使用C函式庫中的字串操作函式。C語言函式字串字元
- C語言函式sscanf()的用法C語言函式
- C語言qsort函式的使用C語言函式
- 關於c語言模擬c++的多型C語言C++多型
- 作業系統:程式狀態轉換模擬,C語言實現作業系統C語言
- 資料結構之C語言模擬整數陣列實現資料結構C語言陣列
- 在LoadRunner中轉換字串大小寫的C語言函式字串C語言函式
- C語言 itoa函式及atoi函式C語言函式
- [ASM C/C++] C語言的main 函式ASMC++C語言AI函式