C语言:字符数组的赋值

2024-03-27 1299阅读

方法一:使用初始化器

可以使用初始化器在定义字符数组时直接赋值,如下所示:(字符要用单引号''括起来)

C语言:字符数组的赋值
(图片来源网络,侵删)
char str1[] = {'H', 'e', 'l', 'l', 'o', '\0'};

或者用字符串字面量来初始化:(需要注意的是①字符串要用双引号""括起来②只能在初始化的时候将字符串直接赋值给字符型数组)

char str2[] = "Hello";

方法二:逐个赋值

可以通过逐个字符赋值的方式来初始化字符数组,如下所示:

char str3[6];
str3[0] = 'H';
str3[1] = 'e';
str3[2] = 'l';
str3[3] = 'l';
str3[4] = 'o';
str3[5] = '\0';

方法三:使用 strcpy 函数

可以使用 strcpy 函数将一个字符串复制到另一个字符数组中,如下所示:(需要注意的是:①这种方法适用于已经定义了字符数组,但想要给它赋值的情况。②需要引用头文件#include )

char str4[20];
strcpy(str4, "Hello");

思考:为什么只有在字符数组初始化的时候,才可以将字符串直接赋值给字符数组;初始化以后必须用strcpy函数呢?

在初始化完成以后,如果尝试将字符串直接赋值给字符数组,会导致编译错误。在C语言中,数组名不是可修改的左值,而是一个常量左值,只能用作获取数组的地址。字符串是不能赋值给常量的。所以,必须使用 strcpy 函数将字符串复制到字符数组中。

初始化之后,可以使用哪些方法将“字符串”赋值给字符数组(4个):

其中包括逐个赋值字符、使用strcpy函数、使用 strcat 函数以及使用 sprintf 函数等。

(1)逐个赋值字符:(注意:字符数组的空间大小,不要超出)

#include 
int main() {
    char str[20]; // 假设字符数组大小为 20
    const char *source = "Hello, world!";
    
    // 逐个赋值字符
    int i;
    for (i = 0; source[i] != '\0' && i  

(2)使用 strcpy 函数:

#include 
#include 
int main() {
    char str[20]; // 假设字符数组大小为 20
    // 使用 strcpy 函数将字符串赋值给字符数组
    strcpy(str, "Hello, world!");
    // 输出结果
    printf("%s\n", str);
    return 0;
}

(3)使用 strcat 函数: (strcat是用来拼接字符串的,不能覆盖掉字符数组内原有的数据)

#include 
#include 
int main() {
    char str[20] = "Hello, "; // 已初始化
    const char *append = "world!";
    
    // 使用 strcat 函数拼接字符串
    strcat(str, append);
    
    // 输出结果
    printf("%s\n", str);
    return 0;
}

(4)使用 sprintf 函数:

#include 
int main() {
    char str[20]="ni hao"; // 假设字符数组大小为 20
    // 使用 sprintf 函数将格式化字符串复制到字符数组中
    sprintf(str, "%s", "Hello, world!");
    // 输出结果
    printf("%s\n", str);
    return 0;
}

sprintf 函数用于将格式化的数据写入字符串中,它的原型定义在 头文件中,

sprintf 函数与 printf 函数类似,只不过它将格式化的输出写入到字符串中,而不是标准输出流。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]