網站首頁 編程語言 正文
以下均為筆記,草率見諒,首先介紹下在字符串章節所用的函數,再介紹幾個常見的api
-
malloc 函數原型:void *malloc(size_t size)
C庫函數void *malloc(size_t size)分配所需的內存空間,并返回一個指向他的指針 -
free C庫函數void free(void *ptr)釋放之前調用calloc、malloc或者realloc所分配的內存空間
作用:1釋放,防止內存泄漏 2防止懸掛指針(野指針的一種)
普通的變量、數組是在棧上開辟空間,可以自動回收;而malloc在堆上開辟空間,程序結束才會釋放,一般需要free。 -
realloc 函數原型 void *realloc(void *ptr,size_t szie);
擴容作用,C庫函數void *realloc(void *ptr,size_t szie)嘗試重新調用之前調用malloc
或者calloc所分配的ptr所指向的內存塊的大小
void * realloc(原本的地址,增大的內存); -
memset是一個初始化函數,作用是將某一塊內存中的全部設置為指定的值。
void *memset(void *str, int c, size_t n);
s指向要填充的內存塊。
c是要被設置的值。
n是要被設置該值的字符數。
返回類型是一個指向存儲區s的指針。 -
assert 函數原型 void assert( int expression );
assert 的作用是現計算表達式expression如果其值為假(即為0),
那么它先向 stderr 打印一條出錯信息,然后通過調用 abort 來終止程序運行。
使用 assert 的缺點是,頻繁的調用會極大的影響程序的性能,增加額外的開銷。
在調試結束后,可以通過在包含 #include 的語句之前插入 #define NDEBUG 來禁用 assert 調用
API
- 輸出字符串:
- puts();
- printf(“%s”,p);
- 獲取字符串:
- scanf(“&s”,p);
- gets; 函數原型 char * gets(char *str);內存是否合法
gets這個函數可以無限讀取,容易發生溢出。如果溢出,多出來的字符將被寫入堆棧中
這就覆蓋了原先的內容,破壞一個或者多個不相關變量的值
- 計算長度:
strlen函數
原型:size_t strlen( const char *string );
char arr[20] = “abcdef”;
int len = strlen(arr);
printf(“%d”, len);
注意:
字符串需要以\0作為結尾,strlen函數返回的是在字符串中\0前面出現的字符個數(不包含\0)
參數指向的字符串必須要以\0作為結束
注意函數的返回值類型是size_t類型
更多參考sizeof和strlen你真的清楚了嗎?
- 拷貝:
- strcpy 函數原型char *strcpy(char *dest,comst char *src);
- strncpy 函數原型 char *strncpy(char *dest,const char *src,int n);
表示把src所指向的字符串中以src地址開始的前n個字節復制到dest所指的函數數組中,
并返回被復制后的的dest - memcpy函數原型void *memcpy(void *destin, void *source, unsigned n);作用:函數memcpy從source指向的對象中復制n個字符到destin指向的對象中返回值:函數memcpy返回destin的指針。
- 拼接:
- strcat 函數原型 char *strchar(char *dest,const char * src);把src所指向的字符串
(包括 ’ \0’)復制到dest所指向的字符串后面(刪除dest原來末尾的 ’ \0’),要保證 * dest足夠長
可以容納被復制進來的 *src,*src中原有的字符不變,返回值指向dest的指針
- 比較:
- strcmp 函數原型 int strcmp(const char*s1,const char *s2);
若str1 = str2,則返回0;若str1<str2,則返回負數;若str1>str2,則返回正數 - strncmp 函數原型int strncmp (const char*s1,const char *s2,size_t n);
功能是把str1和str2比較,最多比較前n個字節,若str1和str2前n個字節相同,返回0;若str1>str2,返回大于0的數
若str1<str2,返回小于0的數
- 查找:
- strchr函數:char * strchr()const char * str, char ch);
功能:
找到字符串中的某個字符
參數:
str - 要檢索的字符串
ch - 要尋找的字符
返回值:
ch首次出現的位置,如果沒有找到ch返回NULL - strstr函數char *strstr(char *str1, const char *str2);
功能:
找到字符串中的子串
參數:
str1 - 要檢索的字符串
str2 - 要尋找的子串
返回值:
若str2是str1的子串,則返回str2在str1的首次出現的地址;如果str2不是str1的子串,則返回NULL
- 分割:
- 字符串分割strtok函數,char * strtok(char * str, const char * delim);
功能:
分解字符串 str 為一組字符串
參數:
str - 要分割的字符串
delim - 分隔符
返回值:
從str開頭開始的一個個被分割的串。當沒有被分割的串時則返回NULL。
- 轉換大小:
- 轉為大寫strupr函數
char *strupr(char *str);
參數:str //要轉換的字符串
功能:用于將字符串中字符轉換為大寫
返回轉換后的小寫字符串,也就是str。 - 轉為小寫strlwr函數
char *strlwr(char *str);
功能等同strupr函數
原文鏈接:https://blog.csdn.net/qq_44333320/article/details/125716294
相關推薦
- 2022-12-05 Android開發InputManagerService創建與啟動流程_Android
- 2022-04-24 C語言時間函數之strftime()詳解_C 語言
- 2021-12-06 Ubuntu編譯內核模塊,內容體現系統日志中_Linux
- 2022-03-18 C語言字符串函數操作(strlen,strcpy,strcat,strcmp)詳解_C 語言
- 2023-07-31 Echarts多個圖表自適應窗口大小
- 2022-05-11 什么是 Reactor 模式?
- 2022-11-14 Python實現腳本轉換為命令行程序_python
- 2022-07-12 Linux命令之美|linux使用tar誤解壓之后,如何刪除解壓后的文件
- 最近更新
-
- 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同步修改后的遠程分支