结构体中字符数组赋值字符串问题

c++ 专栏收录该内容
50 篇文章 0 订阅

原文链接:https://blog.csdn.net/baidu_39774741/article/details/77096792

今天在看结构体变量时发现一个问题:

问题代码如下

int main() {
    struct student{
        char c[20];
    }s1;
    s1.c="china";
    printf("%s",s1.c);
    return 0;
}

输出结果为空,不知道是为什么?

经过网上的答案尽是如此:

 

C语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,要为字符数组赋值可以用string.h头文件中的strcpy函数来完成。
例如:
char a[10] = "123"; /*正确,在定义的时候初始化*/
char a[10];
a = "123"; /*错误,不能用“=”直接为字符数组赋值*/
strcpy(a, "123"); /*正确,使用strcpy函数复制字符串*/
所以要对game[0][0].cpart赋值应该用strcpy(game[0][0].cpart, "123");才对。注意要使用strcpy函数要用#include <string.h>包含string.h头文件。

给C语言结构体中的char数组赋值有两种方式:

 

1、在声明结构体变量时赋值:

 

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

struct stu{

    int x;

    char name[10];

};

int main(void){

    struct stu s={8,"123"};//这样初始化

    printf("%d %s\n",s.x,s.name);

    return 0;

}

2、向数组直接拷贝字符串:

 

 

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "string.h"

struct stu{

    int x;

    char name[10];

};

int main(void){

    struct stu s;

    strcpy(s.name,"abcd");//向name拷贝字符串

    s.x=128;

    printf("%d %s\n",s.x,s.name);

    return 0;

}

至于为什么不能直接给字符数组赋值字符串呢?网上各大神说的是,因为在初始化字符数组时,数组的内存地址已经确定,不能再做修改。

想要直接给数组赋值字符串除了在初始化时赋值,还可以通过两个函数,void *memcpy(void*dest, const void *src, size_t n);,strcpy(str1,str2)。

个人的理解是:在初始化字符数组时,编译器会给字符数组首元素赋予初始地址。而后再另外给字符数组赋值字符串,此时字符数组已经具有地址,编译器就会以为是你要给字符数组某个元素赋值。所以说此时是可以给单个字符数组元素赋值单个字符的,但是不可以赋值字符串。

  • 6
    点赞
  • 0
    评论
  • 10
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

四六级在大学bai各类考试占有相当du重要的地位。在大四在校签订单位的时候,绝大多zhi数公司都有英语要求:通dao过四级。真正进入社会以后,随着现在英语的普及,很多地方,很多事情,都会用到英语,具有一定的英语水平,能够让你在工作出色不少。 大学英语四六级对毕业后求职的重要性: 关系到能不能拿到毕业证 我不敢说全国,最起码在广东,重本的211和985的名牌大学,大部分四六级证书是和毕业证挂钩的。可能还没到就业,万一你的全国英语四级考试达不到425分,你就拿不到你的毕业证书。所以四六级你说重不重要? 是一半企业的敲门砖 (1)随着大学生毕业人数的增长,社会面临的就业压力越来越大,企业为了挑选人才,国企和外企一般都会把四六级证书作为一个最低的门槛。 (2)虽然说全国英语四六级证书只是一张纸,并不能证明一个人的英语水平,但是四级的合格线设在425分对于国内大学生英语要求还是比较低的。所以如果你没有通过英语四级的证书,很多企业在筛选简历时就会把你直接out了。 (3)可以说如果你没有通过大学英语四六级的考试,你的前途就暗淡了一半,很多企业都不会为你敞开大门。当然,如果你有关系的话什么证书都是扯淡。 海外合作是大势所趋 (1)现在这个社会,海外人员越来越多,海外合作的公司也越来越多,走在街上,说不定一天能遇到好几个问路的外国人。所以如果你没有能证明你英语能力的一纸证书,你很难向公司证明你的外语水平和能力。 (2)在北上广深,就连现在的计程车司机也有一定的英语基础,否则生意就很难做下去。所以说在日常生活,我们也有很多机会和外国人打交道,在这个海外合作是大势所趋的年代,英语能力更为重要。
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值