C没有内置的字符串类型。您必须使用字符数组来保存字符串。
由于C也不允许将一个数组赋值给另一个数组,因此您必须使用标准C库中的各种函数将数组元素从一个数组复制到另一个数组,或者自己编写循环来完成。虽然有时有理由编写自己的循环,但使用标准C库函数要好得多。
对于与char
类型一起使用的标准ANSI类型字符串,有大量以str开头的函数,例如用于复制或比较字符串的函数strcpy()
、strcmp()
。还有另一组函数,您可以在其中指定要复制或比较的最大字符数,例如strncpy()
或strncmp()
。
C中的字符串是由二进制零字符终止的字符数组。因此,如果您使用常量字符串,例如“Constant”,这将创建一个字符数组,每个字符都有一个元素,再加上一个附加元素,用于零终止符。
这意味着在调整char数组的大小时,您还必须记住添加一个额外的数组元素来容纳零终止符。
strncpy()函数将把一个char数组复制到另一个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一起使用的宽字符的功能。
char name[SM_NAME_SIZE] = "Alpha";
。 - Gillespie