天天看點

22-11-5學習記錄

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碼值