網站首頁 編程語言 正文
strlen:
用于求字符串長度,從首字符開始,到'\0'結束,'\0'不計入總長度。
函數實現:
size_t my_strlen(const char* ptr) { assert(ptr); const char* ptx = ptr; while (*(++ptx)); return (size_t)(ptx - ptr); }
strcmp:
用于比較兩個字符串大小,注意大小并不是指字符串長度,而是從第一個字符開始比較,比較字符的大小。該函數返回的是一個int值,不同編譯器,返回的值是不一樣。但是正負是一致的,當第一個大于第二個,返回正值,小于則返回負值,相等返回0。
函數實現:
int my_strcmp(const char* str1,const char* str2) { assert(str1 && str2); while((!(*str1 - *str2)) && ((*(str1++)) * (*(str2++)))); return (int)(*str1 - *str2); }
strcpy:
用于復制字符串。
函數實現:
char* my_strcpy(char* dest,const char* source) { assert(dest && source); char* result = dest; while (*(dest++) = *(source++)); return result; }
strcat:
用于在目標字符串末尾追加一個字符串。
函數實現:
char* my_strcat(char* a, const char* b) { assert(a && b); char* tmp = a; while (*(++a)); while (*(a++) = *(b++)); *a = '\0'; return tmp; }
strstr:
用于在一個字符串內尋找另一個字符串。這于KMP算法有關。
函數實現:
const char* my_strstr(const char* a, const char* b)//a為長字符串 b為短字符串 { char* cp = (char*)a; char* s1; char* s2; if (!*b) return a; while (*cp) { s1 = cp; s2 = (char*)b; while (*s1 && *s2 && !(*s1 - *s2)) { s1++; s2++; } if (!*s2) return cp; cp++; } return NULL; }
atoi:
這個函數很有意思,它會把字符串的數字串轉化為int值。
函數實現:
int my_atoi(const char* str) { assert(str); int num = 0; int result = 0; const char* tmp = str; while (*str && *str != '.') { num++; str++; } while (num--) { result += (*tmp - '0') * (int)pow(10, num); tmp++; } return result; }
strncpy
,strncmp
,strncat
:
三個函數都是限制了字符個數,功能是一樣的。
函數實現:
char* my_strncpy(char* dest, const char* sou, size_t num) { assert(dest && sou); char* tmp = dest; while ((num--) && (*(dest++) = *(sou++))); return tmp; } char* my_strncat(char* a, const char* b, int n) { assert(a && b); char* tmp = a; while (*(++a)); while ((n--) && (*(a++) = *(b++))); *a = '\0'; return tmp; } int my_strncmp(const char* str1, const char* str2,int n) { assert(str1 && str2); while ((!(*str1 - *str2)) && ((*(str1++)) * (*(str2++))) && (n--)); return (int)(*str1 - *str2); }
總結
原文鏈接:https://blog.csdn.net/roseisbule/article/details/122916028
相關推薦
- 2023-03-22 Redis慢查詢日志及慢查詢分析詳解_Redis
- 2022-07-17 baselines示例程序train_cartpole.py的ImportError_python
- 2022-11-17 Python+OpenCV之圖像輪廓詳解_python
- 2023-05-10 Pandas數據分析多文件批次聚合處理實例解析_python
- 2022-01-21 什么是前端開發?什么是后端開發?
- 2022-06-13 Docker?registry私有鏡像倉庫服務部署案例演示_docker
- 2022-04-09 windows一鍵啟動多個bat批處理文件或者啟動多個cmd窗口執行命令
- 2023-01-18 React報錯Element?type?is?invalid解決案例_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支