【C语言笔记进阶篇】第二章:字符串函数和内存函数
目錄
(1)分類
(2)字符串函數
A:strlen(求字符串長度)
B:strcpy(字符串復制_不受限制)
C:strcat(字符串追加_不受限制)
D:strcmp(字符串比較_不受限制)
E:strncmp(字符串復制_受限制)
F:strncat(字符串追加_受限制)
G:strncmp(字符串比較_受限制)
H:strstr(查找字符串)
I:strtok(字符串切割)
J:strerror
(3)字符函數
A:字符分類函數
B:字符轉換函數(常用的轉大寫和轉小寫)
(4)內存函數
A:memcpy(不重疊內存拷貝函數)
B:memmove(重疊內存拷貝函數)
前言:C語言中會大量涉及到對字符和字符串的處理,但是C語言本身是沒有字符串類型的,按照之前所學,需要處理字符串時,我們通常將其保存在一個字符數組或者是定義為常量字符串
(1)分類
?
(2)字符串函數
A:strlen(求字符串長度)
第一:strlen的基本用法
第二:strlen的注意事項
①:對于其返回值的注意事項
如下,從主觀角度上講,最終的輸出結果和我們預期的是不一致的,這是因為strlen返回的類型是size_t,查看定義可知,size_t實際上就是unsignend int,編寫庫函數的人的設置這樣的返回值的目的就在于他們認為字符串長度絕對不可能是負數。但是這樣的一個設置,有時就會產生如下的歧義
第三:模擬實現strlen
①:計數器的方式
②:遞歸(不創建臨時變量)
?
③:指針-指針
B:strcpy(字符串復制_不受限制)
第一:strcpy的基本用法
第二:strcpy的注意事項
①:源字符串必須以'\0'結束
也就是如果使用字符數組的方式賦值,最后的元素必須是'\0',不然會找不到結束標志的
②:不要賦值到常量字符串中去
常量字符串是不可變的,也就是不能修改的
第三:模擬實現strcpy
?
C:strcat(字符串追加_不受限制)
第一:strcat的基本用法
第二:strcat的模擬實現
D:strcmp(字符串比較_不受限制)
第一:strcmp的基本用法
第二:strcmp注意事項
C語言中規定,大于時返回的是大于0的數字,小于時返回的是小于0的數字,但是在VS編譯器下,他返回的數字卻是固定的1或-1,所以為了使得代碼更具有通用性,利用strcmp在判斷字符串大小時,正確的寫法如下
第三:strcmp模擬實現
E:strncmp(字符串復制_受限制)
第一:strncmp的基本用法
第二:strcmp的注意事項
第三:模擬實現strncpy
F:strncat(字符串追加_受限制)
第一:strnact的基本用法
第二:strncat的注意事項
如果要追加的字符個數超過了源字符串長度,那么只把應該追加的追加后補上'\0'再就不管了
第三:strncat的模擬實現
G:strncmp(字符串比較_受限制)
第一:strncmp的基本用法
第二:strncmp模擬實現
H:strstr(查找字符串)
第一:strstr的基本用法
第二:strstr的模擬實現
關于字符串查找,其實就是數據結構中串那一章的串的模式匹配算法,屬于暴利匹配,具體查閱相關部分
I:strtok(字符串切割)
第一:strtok的基本用法
?
J:strerror
第一:strerror的基本用法
?
當使用庫函數時,有時會出現錯誤,引入<errno.h>,系統會生成一個全局變量errno,出現錯誤后系統就會生成錯誤碼并賦值給errno,但是我們并不知道錯誤碼真正的含義,而strerror就是用來翻譯這個錯誤碼的,函數返回值是char*,也就是一個字符串。比如在打開文件時經常會遇到打開文件失敗,而打開文件失敗的原因有很多種,此時我們就可用strerror函數來查看究竟是什么原因
(3)字符函數
A:字符分類函數
#include <ctype.h>
B:字符轉換函數(常用的轉大寫和轉小寫)
(4)內存函數
上述我們研究的函數都是針對字符串而言的,但是對于整形數組,結構體這樣的數據是不能用字符串函數進行操作的,所以就要使用內存函數
A:memcpy(不重疊內存拷貝函數)
第一:memcpy的基本用法
第二:memcpy的模擬實現
B:memmove(重疊內存拷貝函數)
第一:memmove基本用法
C:memcmp(內存比較函數)
總結
以上是生活随笔為你收集整理的【C语言笔记进阶篇】第二章:字符串函数和内存函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#静态类 转载:(原文:http://
- 下一篇: 计算机网络之物理层:5、数据的交换方式(