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