函式介紹
求字串長度strlenstrlen
長度不受限制的字串函式
strcpy
strcat
strcmp
長度受限制的字串函式介紹 strncpy
strncat
strncmp
字串查詢
strstr
strtok
錯誤資訊報告
strerror
字元操作
記憶體操作函式
memcpy
memmove
size_t strlen ( const char * str );strlen函式的模擬實現字串已經 『\0』 作為結束標誌,strlen函式返回的是在字串中 『\0』 前面出現的字元個數(不包含 『\0』 )。
引數指向的字串必須要以 『\0』 結束。
注意函式的返回值為size_t,是無符號的( 易錯 )
strcpy//方法一
intmystrlen
(char
*str)
return count;
//方法二
intmystrlen1
(char
* str)
return p - str;
}}
char* strcpy(char * destination, const char * source );strcpy模擬實現源字串必須以 『\0』 結束。
會將源字串中的 『\0』 拷貝到目標空間。
目標空間必須足夠大,以確保能存放源字串。
目標空間必須可變。
stractchar
*mystrcpy
(char
*dst,
const
char
*src)
char * strcat ( char * destination, const char * source );stract模擬實現源字串必須以』\0』 結束。
目標空間必須有足夠的大,能容納下源字串的內容。
目標空間必須可修改。
strcmpchar
*mystrcat
(char
*dst,
const
char
*src)
while((
*dst++
=*src++))
;return ret;
}
int strcmp(const char * str1, const char * str2 );strcmp模擬實現第乙個字串大於第二個字串,則返回大於0的數字
第乙個字串等於第二個字串,則返回0
第乙個字串小於第二個字串,則返回小於0的數字
strcnpyint
mystrcmp
(char
*dst,
char
*src)}if
(*dst >
*src)
else
}
char * strncpy ( char * destination, const char * source, size_t numstrncat);拷貝num個字元從源字串到目標空間。
如果源字串的長度小於num,則拷貝完源字串之後,在目標的後邊追加0,直到num個。
char * strncat ( char * destination, const char * source, size_t numstrncmp);鏈結num個字元從源字串到目標空間,並新增乙個終止null字元。
如果源字串的長度小於num,則只複製到終止符null之前的內容。
int strcmp(const char *str1,const char *str2,size_t num);strstr比較到出現另個字元不一樣或者乙個字串結束或者num個字元全部比較完。
char * strstr ( const char *, const char * );strstr模擬實現返回乙個指向str1中第乙個出現str2的指標,如果str2不是str1中的一部分,則返回乙個空指標。
strtokchar
*mystrstr
(char
*str1,
char
*str2)if(
*s2 ==
'\0'
) start++;}
return
null
;}
char * strtok ( char * str, const char * sep );strerrorsep引數是個字串,定義了用作分隔符的字元集合
第乙個引數指定乙個字串,它包含了0個或者多個由sep字串中乙個或者多個分隔符分割的標記。
strtok函式找到str中的下乙個標記,並將其用 \0 結尾,返回乙個指向這個標記的指標。(注:strtok函式會改
變被操作的字串,所以在使用strtok函式切分的字串一般都是臨時拷貝的內容並且可修改。)
strtok函式的第乙個引數不為 null ,函式將找到str中第乙個標記,strtok函式將儲存它在字串中的位置。
strtok函式的第乙個引數為 null ,函式將在同乙個字串中被儲存的位置開始,查詢下乙個標記。
如果字串中不存在更多的標記,則返回 null 指標。
char *strerror(int errnum);memcpy返回錯誤碼,所對應的錯誤資訊;
void * memcpy ( void * destination, const void * source, size_t num );memcpy模擬實現函式memcpy從source的位置開始向後複製num個位元組的資料destination的記憶體位置。
這個函式在遇到 '\0』的時候並不會停下來。
如果source和destination有任何的重疊,複製的結果都是未定義的。
memmovevoid
*mymemcpy
(void
*dst,
void
*src,
int count)
return ret;
}
void * memmove ( void * destination, const void * source, size_t nummemmove模擬實現);和memcpy的差別就是memmove函式處理的源記憶體塊和目標記憶體塊是可以重疊的。
如果源空間和目標空間出現重疊,就得使用memmove函式處理。
void
*mymemmove
(void
*dst,
void
*src,
int count)
}else
}return ret;
}
字元函式和字串函式的模擬實現
strlen 算字串的長度 size t strlen const char str 1.模擬實現strlen include include intmy strlen const char p return count int main strcpy 字串拷貝 char strcpy char d...
模擬實現字串庫函式
1.strcat 1 函式功能 實現兩個字串的連線 2 思想 首先遍歷目標字串,找到 0 的位址,然後將資源字串通過指標一次一次的拼接在目標字串後面,直到指標走到資源字串的 0 3 char mystrcat char strdestination,const char strsource whil...
模擬實現字串查詢函式strstr
題目 不使用庫函式,模擬實現字串查詢函式strstr的功能。例如 在字串dest abcdefg 中查詢字串src bcd 是否存在,如存在返回 bcd 在 abcdefg 中的起始位置,即 bcdefg 若不存在,則返回null。分析 1.首先定義乙個慢指標slow遍歷dest字串,初始指向des...