黑马程序员技术交流社区

标题: 怎么会报错呢 [打印本页]

作者: a18504725177    时间: 2015-3-28 11:31
标题: 怎么会报错呢
请问 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);
}

作者: oucding    时间: 2015-3-28 22:09
你这是对字符串赋值问题没弄清楚,首先不能用字符串给字符数组赋值,如: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);
}
作者: 魏建国    时间: 2015-3-29 02:14
好东西,学习了一下
作者: Fench    时间: 2015-3-30 15:13
1楼正解.  对数组进行赋值只能在定义的时候初始化赋值, 比如: char name[10] = "jack"; 是可以的, 但是  char name[10]; name="jack"就是错误的. 就像你说的用字符串指针就完全OK, 如果以一定要用数组的话,可以使用strcpy函数来赋值. 如: strcpy(name, "jack");
作者: wupeng756    时间: 2015-3-30 15:46
很简单一句话 请用 strcpy




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2