C沒有內置的字符串類型。您必須使用一組字符來保存字符串。
因爲C也不允許將一個數組賦值給另一個數組,所以必須使用標準C庫中的各種函數將數組元素從一個數組複製到另一個數組,或者您必須編寫一個循環來自己完成。儘管有時候有理由編寫自己的循環,但使用標準C庫函數更受歡迎。
爲了與char
類型中使用的標準ANSI類型字符串存在大量的功能其中大部分與STR開始諸如函數來複制或比較字符串strcpy()
,strcmp()
。還有另一組您指定要複製或比較的最大字符數,例如strncpy()
或strncmp()
。
C中的字符串是一個由二進制零字符終止的字符數組。因此,如果您使用常量字符串(例如「常量」),則會創建一個字符數組,每個字符只有一個元素,另外還有一個用於零終止符的元素。
這意味着當調整字符數組的大小時,還必須記得添加一個額外的數組元素來保存零終止符。
strncpy()函數會將一個字符數組複製到另一個字符數組,直到指定的最大字符數或找到零終止符時爲止。如果達到最大字符數,則目標數組不會被零終止符終止,所以這是需要注意的。
char one[10];
char two[20];
strncpy (one, "1234567", 10); // copy constant to the char buffer max of 10 chars
one[9] = 0; // make sure the string is zero terminated, it will be this is demo
strcpy (two, one);
strcat (two, " suffix"); // add some more text to the end
還有一些函數可以與UNICODE一起使用的寬字符。
您不能將字符串分配給char數組。 – squiguy
您可以但必須全部同時使用,即'char name [SM_NAME_SIZE] =「Alpha」;' – RPGillespie