1,<assert.h> assert() {在傳參時要養成使用assert的習慣,可以幫助我們找到程式bug}
作用:斷言,判斷指針是否為空,檢查參數是否滿足要求,以免引起程式崩潰
例:assert(arr!=NULL) assert(light<eight)
2,三步反轉法
左旋n個數:将“abcdefghi”的前n個元素放到最後->cdefghiab
第一步:分成兩部分 前n項 ab 剩餘的 cdefghi
第二步:将兩部分分别逆序 ba ihgfedc
第三步:将所有元素逆序 cdefghiab
3,<string.h> strcat() char *strcat( char *strDestination,
const char *strSource );
作用:字元串後面追加一個字元串
例:char arr1[]="abc"
char arr2[]="hij"
strcat(arr1,arr2)-->arr1[]="abchij"
原理:a b c \0 h i j \0
先找到arr1的\0,再将arr2的首元素替換arr1的\0,然後依次放入,直到\0 {注:arr1的空間要足夠大,否則會非法通路空間)
注意:arr1{strcat(arr1,arr1)}不能追加自身,因為覆寫\0的同時沒有了結束标志,會一直追加下去,是系統奔潰
4, <string.h> strncat() char *strncat( char *strDest,
const char *strSource, size_t
count );
和strcat相似,但規定了傳arr2的長度,如果提前遇到\0依舊會停止
char arr1[20] = { "abcd" };
char arr2[] = "ef\0gh";
strncat(arr1, arr2, 4);----->arr1[20]="abcdef";
5,<string.h> strstr() char *strstr( const char
*string, const char *strCharSet
);
作用:查找子串,arr1中是否有arr2
找到了傳回arr1中arr2首元素字元的位址
未找到傳回NULL
6, 求長度 strlen size_t( const char *string
);
複制字元串 strcpy char*( char *strDestination, const char *strSource );
strncpy char*( const char *string1, const
char *string2, size_t count );
注意:如果count大于scr的長度,多餘的部分自動補0
追加字元串 strcat char*( char *strDestination, const char
*strSource );
strncat char*( char *strDest, const char
*strSource, size_t count );
注意:如果count大于scr的長度,追加完後不在繼續
如果count小于scr的長度,追加完後自動補0
找子字元串 strstr char*( const char *string, const
char *strCharSet );
字元串比較 strcmp int ( const char *string1, const char
*string2 );//比較字元的ASCII碼值