C:字符數組和字符指針

  

      C語言中沒有string類型,字符串都是經過char字符數組來存儲的數組

  char * str = "Hello" (字符指針)安全

  char str[6] = "Hello" (字符數組)函數

  char line[10] = "Hello"  編譯器編譯後數組長度爲6,自動生成\0都是{'H','e','l','l','o','\0'}指針

  當用char *str 初始化字符串數組以後,該數組爲只讀數組(其實是const常量,不可修改),在代碼段中,不能夠對其修改,如s[0] = ‘s’,否者報錯字符串

     char * str = "Hello" 等價於char * str;  str = "Hello"編譯器

  當用char str[6]初始化字符串數組以後,該數組是能夠修改的string

     只能使用 char str[6] = "Hello",不能夠char str[6];  str[6] = "Hello"編譯

     若是要構造字符串,用數組變量

     若是要處理字符串,用指針tab

   char *表示的是字符串或者是單個字符

 

  要寫入字符串數組,要開闢新的空間(之後補充)

      

  對於逃逸字符,能夠使用//來輸出

 

字符串的輸入和輸出

  char string[8];

  scanf("%s",&string);

  printf("%s",string);

    輸入輸出以空格,tab和回車來區分  好比輸入hello world!  只能讀取到hello,輸入hello

    可是scanf若是輸入超過8個字符,會發生abort數組越界

  建議——安全的輸入

    scanf("%7s",&string);表示輸入的字符只取7個字符,剩餘的不要了(第8個給'\n')

  

常見錯誤

  char * string;

  scanf("%s",&string)

  只是定義字符串指針變量,沒有初始化,會報錯

 

常見的string函數

  #include<string.h>

  strlen函數,用於返回s的長度,不包括\0

  strcmp函數,比較兩個函數的大小,返回 0:長度相等  比較字符串中從第一個開始一直到有不一樣的值,之間ASCII的差值

  strcpy函數,將第二個參數字符串拷貝到第一個字符串

  strcat函數,作鏈接,將第二個參數字符串拷貝到第一個字符串後面

  安全問題

    若是拷貝或者鏈接並不知道目的地的空間,

相關文章
相關標籤/搜索