A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a18504725177 中级黑马   /  2015-3-28 11:31  /  874 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问 fen[0].name = "rossfs";为什么会报错?。。我定义个一个结构体rank,然后定义个一个数组,储存结构体。结构体成员变量name要是改成char *name就可以实现。现在用char name[10]分配出一个10字节准备存放结构体里的name。之后   fen[0].name = "wwcd";就赋值失败了。。难道要一个一个定义??fen[0].name[0]='w'?..??何解:'(

#include <stdio.h>

int main()
{
  struct Rank
    {
        int no;
        int score;
        char name[10];
    };
   
    struct Rank fen[10];
    fen[0].no = 1000;
    fen[0].score = 1;
    fen[0].name = "wwcd";
    printf("%d--%d--%s\n",fen[0].no,fen[0].score,fen[0].name);
}

4 个回复

倒序浏览
你这是对字符串赋值问题没弄清楚,首先不能用字符串给字符数组赋值,如:char name[10];name = "Jake"; 所以你程序中的fen[0].name = "wwcd";这句话肯定是错误的你可以试试:
    struct Rank
    {
        int no;
        int score;
        char *name;
    };
   
    struct Rank fen[10];
    fen[0].no = 1000;
    fen[0].score = 1;
    fen[0].name = "wwcd";
    printf("%d--%d--%s\n",fen[0].no,fen[0].score,fen[0].name);
}
回复 使用道具 举报
好东西,学习了一下
回复 使用道具 举报
1楼正解.  对数组进行赋值只能在定义的时候初始化赋值, 比如: char name[10] = "jack"; 是可以的, 但是  char name[10]; name="jack"就是错误的. 就像你说的用字符串指针就完全OK, 如果以一定要用数组的话,可以使用strcpy函数来赋值. 如: strcpy(name, "jack");
回复 使用道具 举报
很简单一句话 请用 strcpy
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马