📅  最后修改于: 2020-12-19 05:28:34             🧑  作者: Mango
字符串实际上是由空字符’\ 0’终止的一维字符数组。因此,一个空终止字符串含有包含字符串后跟一个空字符。
以下声明和初始化创建一个由单词“ Hello”组成的字符串。为了将空字符保留在数组的末尾,包含字符串的字符数组的大小比单词“ Hello”中的字符数大一。
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
如果您遵循数组初始化的规则,则可以编写以下语句,如下所示:
char greeting[] = "Hello";
以下是C / C++中上述定义的字符串的内存表示-
实际上,您不会将空字符放在字符串常量的末尾。 C编译器在初始化数组时会自动将’\ 0’放在字符串的末尾。让我们尝试打印上述字符串-
#include
int main () {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("Greeting message: %s\n", greeting );
return 0;
}
编译并执行上述代码后,将产生以下结果-
Greeting message: Hello
C支持广泛的函数来处理以null终止的字符串-
Sr.No. | Function & Purpose |
---|---|
1 |
strcpy(s1, s2); Copies string s2 into string s1. |
2 |
strcat(s1, s2); Concatenates string s2 onto the end of string s1. |
3 |
strlen(s1); Returns the length of string s1. |
4 |
strcmp(s1, s2); Returns 0 if s1 and s2 are the same; less than 0 if s1 |
5 |
strchr(s1, ch); Returns a pointer to the first occurrence of character ch in string s1. |
6 |
strstr(s1, s2); Returns a pointer to the first occurrence of string s2 in string s1. |
以下示例使用了上述一些功能-
#include
#include
int main () {
char str1[12] = "Hello";
char str2[12] = "World";
char str3[12];
int len ;
/* copy str1 into str3 */
strcpy(str3, str1);
printf("strcpy( str3, str1) : %s\n", str3 );
/* concatenates str1 and str2 */
strcat( str1, str2);
printf("strcat( str1, str2): %s\n", str1 );
/* total lenghth of str1 after concatenation */
len = strlen(str1);
printf("strlen(str1) : %d\n", len );
return 0;
}
编译并执行上述代码后,将产生以下结果-
strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10