C語(yǔ)言字符串函數(shù)介紹與模擬實(shí)現(xiàn)詳解
更新時(shí)間:2022年02月25日 16:12:27 作者:誠(chéng)摯的喬治
字符串函數(shù)(String?processing?function)也叫字符串處理函數(shù),指的是編程語(yǔ)言中用來(lái)進(jìn)行字符串處理的函數(shù),如C,pascal,Visual以及LotusScript中進(jìn)行字符串拷貝,計(jì)算長(zhǎng)度,字符查找等的函數(shù)
strlen
| strlen | |
| 頭文件 | #include <string.h> |
| 格式 | size_t strlen( const char* str) |
| 功能 | 計(jì)算字符串長(zhǎng)度 |
| 返回值 | 返回字符串的長(zhǎng)度 |
//strlen的模擬實(shí)現(xiàn)
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* str)
{
assert(str); int count = 0;
while (*str != '\0')
{
str++;
count++;
}
return count;
}strcat
| strcat | |
| 頭文件 | #include <string.h> |
| 格式 | char* strcat(char* dest,const char* src) |
| 功能 | 追加子字符串到目標(biāo)字符串后 |
| 返回值 | 目標(biāo)字符串的首地址 |
//strcat模擬實(shí)現(xiàn)
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* str1,const char *str2)
{
assert(str1, str2);
char* tmp = str1;
//找出str1中的斜杠零
while (*str1)
{
str1++;
}
//在str1上追加
while (*str1++=*str2++)
{
;
}
return tmp;
}
int main()
{
char arr1[20] = "hello";
char arr2[] = " world";
printf("%s",my_strcat(arr1,arr2));
return 0;
}strcpy
| strcpy | |
| 頭文件 | #include <string.h> |
| 格式 | char* strcpy(char* dest,char* src) |
| 功能 | 將參數(shù)src字符串拷貝至參數(shù)dest所指的地址 |
| 返回值 | 目標(biāo)字符串的首地址 |
//模擬實(shí)現(xiàn)strcpy
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char *str2,char *str1)
{
assert(str1, str2);
char* tmp = str2;
while (*str1)
{
*str2++ = *str1++;
}
return tmp;
}
int main()
{
char arr1[20] = "abcdef";
char arr2[20] = "xxxxxxxxxxxxx";
my_strcpy(arr2,arr1);
printf("%s", arr2);
return 0;
}strcmp
| strcmp | |
| 頭文件 | #include <string.h> |
| 格式 | int strcmp (const char* str1,const char* str2) |
| 功能 | 比較兩字符串的大小 |
| 返回值 | str1>str2 返回值>0 str1<str2 返回值<0 str1=str2 返回值=0 |
//strcmp模擬實(shí)現(xiàn)
#include<stdio.h>
#include<assert.h>
int strcmp(const char* str1,const char* str2)
{
assert(str1, str2);
while (*str1 == *str2)
{
str1++;
str2++;
}
return *str1 - *str2;
}
int main()
{
char arr1[] = "abc";
char arr2[] = "abcd";
printf("%d", strcmp(arr1, arr2));
return 0;
}strstr
| strstr | |
| 頭文件 | #include <string.h> |
| 格式 | char* my_strstr(const char*str,const char* substr) |
| 功能 | 在目標(biāo)字符串中查找子字符串 |
| 返回值 | 目標(biāo)字符串中,與子字符串相同的字符串首地址 |
#include<stdio.h>
#include<assert.h>
char* my_strstr(const char*str,const char* substr)
{
char* s1 = str;//防止str被破壞
char* s2 = substr;//防止substr被敗壞
char* cur = str;//存儲(chǔ)中間地址
assert(str && substr);
//排除substr為空
if (substr == '\0')
{
return str;
}
while (*cur)
{
s1 = cur;
s2 = substr;
while (*s1 && *s2 && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
return cur;
cur++;
}
return NULL;
}
int main()//模擬實(shí)現(xiàn)strstr函數(shù)
{
char arr1[] = "abbbcdef";
char arr2[] = "bbc";
printf("%s", my_strstr(arr1, arr2));
return 0;
}到此這篇關(guān)于C語(yǔ)言字符串函數(shù)介紹與模擬實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言 字符串函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
- C語(yǔ)言字符串函數(shù),字符函數(shù),內(nèi)存函數(shù)使用及模擬實(shí)現(xiàn)
- C語(yǔ)言超全面講解字符串函數(shù)
- C語(yǔ)言超詳細(xì)講解字符串函數(shù)和內(nèi)存函數(shù)
- C語(yǔ)言字符串函數(shù)與內(nèi)存函數(shù)精講
- C語(yǔ)言實(shí)例問(wèn)題探究字符串函數(shù)的應(yīng)用
- C語(yǔ)言詳細(xì)分析常見(jiàn)字符串函數(shù)與模擬實(shí)現(xiàn)
- C語(yǔ)言的字符函數(shù)和字符串函數(shù)詳解
- C語(yǔ)言進(jìn)階教程之字符函數(shù)&字符串函數(shù)
- C語(yǔ)言字符串函數(shù)模擬實(shí)現(xiàn)流程介紹
相關(guān)文章
C語(yǔ)言排序算法之冒泡排序?qū)崿F(xiàn)方法【改進(jìn)版】
這篇文章主要介紹了C語(yǔ)言排序算法之冒泡排序?qū)崿F(xiàn)方法,結(jié)合具體實(shí)例形式分析了C語(yǔ)言實(shí)現(xiàn)的基本冒泡排序?qū)崿F(xiàn)方法及增設(shè)flag標(biāo)志位的改進(jìn)型算法,需要的朋友可以參考下2017-09-09
C語(yǔ)言實(shí)現(xiàn)銷(xiāo)售管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)銷(xiāo)售管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
C++控制權(quán)限關(guān)鍵字protected
這篇文章主要介紹了C++控制權(quán)限關(guān)鍵字protected,protected和private類(lèi)似,而對(duì)于派生類(lèi)來(lái)說(shuō),protected與public類(lèi)似,下面來(lái)一起倆姐更多詳細(xì)內(nèi)容吧,需要的小伙伴可以參考一下2022-01-01
C語(yǔ)言利用模板實(shí)現(xiàn)簡(jiǎn)單的棧類(lèi)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言利用模板實(shí)現(xiàn)簡(jiǎn)單的棧類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12

