C 没有内置的字符串类型。您必须使用字符数组来保存字符串。
由于 C 也不允许将一个数组分配给另一个数组,因此您必须使用标准 C 库中的各种函数将数组元素从一个数组复制到另一个数组,或者您必须自己编写一个循环来完成。尽管有时有理由编写自己的循环,但更倾向于使用标准 C 库函数。
对于与该类型一起使用的标准 ANSI 类型字符串,char
有大量函数,其中大多数以 str 开头,例如复制或比较字符串的函数strcpy()
,strcmp()
. 还有另一组,您可以指定要复制或比较的最大字符数,例如strncpy()
or strncmp()
。
C 中的字符串是一个以二进制零字符结尾的字符数组。因此,如果您使用诸如“Constant”之类的常量字符串,这将创建一个字符数组,其中每个字符一个元素加上一个用于零终止符的附加元素。
这意味着在调整 char 数组大小时,您还必须记住再添加一个额外的数组元素来保存零终止符。
strncpy() 函数会将一个 char 数组复制到另一个,直到指定的最大字符数或找到零终止符时。如果达到最大字符数,则目标数组将不会被零终止符终止,因此需要注意这一点。
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 一起使用的宽字符。