C语言字符串初始化

  • Post category:C

C语言字符串可以用字符数组表示,也可以用字符指针表示。其中,字符数组表示的字符串需要初始化,初始化方式有多种。下面就从字符数组表示字符串的方面,详细讲解C语言字符串初始化的完整使用攻略。

字符数组初始化

字符数组初始化有以下三种方式:

1. 直接赋值

字符数组初始化可以直接赋值,如下:

char str[] = "hello";

这里将字符串”hello”赋值给字符数组str,编译器会为字符数组str分配足够的空间存储字符串,末尾自动加上零终止符’\0’。注意,由于编译器会自动计算出字符数组的长度,所以字符数组赋值时不能使用变量,如下是错误的写法:

char s[] = "hello";
int len = strlen(s); // 错误,编译器无法知道字符数组的长度

2. 使用字符串长度初始化

字符数组初始化还可以通过字符串的长度,给字符数组赋初值,代码如下:

char str[10] = {'h', 'e', 'l', 'l', 'o', '\0'};

字符串长度为5,需要存储的字符包括”h”、”e”、”l”、”l”、”o”和字符串末尾的零终止符’\0’,所以字符数组的长度至少为6。代码中定义字符数组str的长度为10,为了避免越界,末尾用零终止字符’\0’补足空间。

3. 使用常量字符串初始化

字符数组初始化还可以使用常量字符串初始化,代码如下:

char str[10] = "hello";

这里将常量字符串”hello”赋值给字符数组str,编译器会为字符数组str分配足够的空间存储字符串,末尾自动加上零终止符’\0’。需要注意的是,字符数组的长度需要至少比常量字符串长度大1,因为常量字符串末尾的零终止符也需要空间。

示例说明

下面分别举两个例子,演示以上三种初始化方式的用法。

示例一:直接赋值

#include<stdio.h>
#include<string.h>

int main() {
    char str[] = "hello"; // 直接赋值
    printf("字符串长度为:%d\n", strlen(str)); // 输出字符串长度
    printf("字符串内容为:%s\n", str); // 输出字符串内容
    return 0;
}

上述代码中,定义字符数组str并直接将”hello”赋值给它,通过strlen()函数可以计算出字符串长度,用%s格式化输出字符串内容,执行结果如下:

字符串长度为:5
字符串内容为:hello

示例二:使用字符串长度初始化

#include<stdio.h>
#include<string.h>

int main() {
    char str[10] = {'h', 'e', 'l', 'l', 'o', '\0'}; // 使用字符串长度初始化
    printf("字符串长度为:%d\n", strlen(str)); // 输出字符串长度
    printf("字符串内容为:%s\n", str); // 输出字符串内容
    return 0;
}

上述代码中,定义字符数组str的长度为10,通过{‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’}的形式,将字符数组初始化为字符串”hello”,执行结果如下:

字符串长度为:5
字符串内容为:hello

以上就是C语言字符串初始化的完整使用攻略,并附带了两个相关示例。