函式介紹
1.求字串長度
strlen
size_t(const
char
* str)
字串以』\0』為結束的標誌 strlen返回的是遇到』\0』前字元的個數
函式的返回值是size_t(無符號)
模擬實現
1.遞迴 不建立臨時變數
#include
#include
size_t my_strlen
(char
* str)
return1+
my_strlen
(str +1)
;
2.指標相減
size_t my_strlen
(const
char
*str)
return str - start;
}
3.建立臨時變數
size_t my_strlen
(const
char
* str)
return count;
}
長度不受限制的字串函式
1.strcpy :字串拷貝的函式
char
*strcpy
(char
* destination,
const
char
* source );
源字串必須以』\0』結束 源字串拷貝到目標字串時』\0』也要進行拷貝
目標空間必須足夠大 且可以進行修改
模擬實現:
char
*strcpy
(char
* dest,
const
char
* src )
return ret;
}
2.strcat:字串追加函式
char
*strcat
(char
* dest,
const
char
* src)
;
源字串必須以』\0』結束
目標空間需要足夠大且可以修改
不能自己給自己追加,在追加的過程中,已經修改了源字串的值
模擬實現:
char
*my_strcat
(char
* dest,
const
char
* src)
//再從'\0'處開始進行拷貝
while
(*dest++
=*src++
)return ret;
}
3.strcmp:字串比較函式.比的是ascii值的大小
第乙個字串大於第二個字串,則返回大於0的數字
第乙個字串等於第二個字串,則返回0
第乙個字串小於第二個字串,則返回小於0的數字
int strcmp (
const
char
* str1,
const
char
* str2 )
;
模擬實現
#include
#include
intmy_strcmp
(const
char
* s1,
const
char
* s2)
return
*s1 -
*s2;
}
長度受限制的字串函式
1.strncpy
拷貝num個字元從源字串到目標空間。
char
* strncpy (
char
* destination,
const
char
* source, size_t num )
;
2.strncat
如果源字串的長度小於num,則拷貝完源字串之後,在目標的後邊追加0,直到num個
char
* strncat (
char
* destination,
const
char
* source, size_t num)
;
3.strncmp
int strncmp (
const
char
* str1,
const
char
* str2, size_t num )
;
比較到出現另個字元不一樣或者乙個字串結束或者num個字元全部比較完。
字串查詢
1.strstr :判斷乙個字串是否是另乙個字串的子串
模擬實現:
char
*my_strstr
(const
char
* str1,
const
char
* str2)
while
(*cp)if(
*bf ==
'\0'
)//遍歷完str2,str2是str1的子字串,返回cp
cp++
;//不是子字串,讓cp向後指 再進行遍歷判斷
}
2.strtok:
char
* strtok (
char
* str,
const
char
* sep )
;
第乙個引數指定乙個字串,它包含了0個或者多個由sep字串中乙個或者多個分隔符分割的標記。
strtok函式找到str中的下乙個標記,並將其用 \0 結尾,返回乙個指向這個標記的指標。(注:strtok函式會改變被操作的字串,所以在使用strtok函式切分的字串一般都是臨時拷貝的內容並且可修改。)
strtok函式的第乙個引數不為 null ,函式將找到str中第乙個標記,strtok函式將儲存它在字串中的位置。
strtok函式的第乙個引數為 null ,函式將在同乙個字串中被儲存的位置開始,查詢下乙個標記。
如果字串中不存在更多的標記,則返回 null 指標
記憶體操作函式:
1.memcpy:
void
* memcpy (
void
* dest,
const
void
* src, size_t num )
;
函式memcpy從src的位置開始向後複製num個位元組的資料到dest的記憶體位置。
這個函式在遇到 『\0』 的時候不會停下來。
函式不能處理源記憶體和目標記憶體重疊的情況
模擬實現:
void
*my_memcpy
(void
* dest,
const
void
* src, size_t count)
return ret;
}
2.memmove:
void
*memmove
(void
* dest,
const
void
* src,size_t num)
;
函式處理的源記憶體塊和目標記憶體塊是可以重疊的。
模擬實現:
void
*my_memove
(void
* dest,
const
void
* src, size_t count)
}//從後往前拷貝
else
}return ret;
}
C語言 字串和字串函式
輸入 gets 函式 1.gets 從標準輸入裝置讀取字串,以回車結束讀取,使用 0 結尾,回車符 n 被捨棄沒有遺留在緩衝區。2.可以用來輸入帶空格的字串。3.可以無限讀取,不會判斷上限,因此使用gets不安全,可能會造成溢位。fgets 和 fputs 函式 1.fgets函式的第2個引數指明了...
C語言ctype h字元函式和字串
ctype.h存的是與字元相關的函式 這些函式雖然不能處理整個字串,但是可以處理字串中的字元 toupper 函式,利用toupper 函式處理字串中的每個字元,轉換成大寫 punctcount 函式,利用ispunct 統計字串中的標點符號個數 使用strchr 處理fgets 讀入字串的換行符 ...
C語言的字元函式和字串函式詳解
目錄 釋 是所求 0 之前的字元個數。庫函式型別 size t const char size t unsigned int include int main 長度不受限長度受限strcpystrncpystrcatstrncatstrcmpstrncmp 庫函式型別 char char const...