读书人

构造数组

发布时间: 2012-10-15 09:45:24 作者: rapoo

结构数组
我编了个程序,里面定义了结构
struct plane {
int seat;
int flag;
char fname[11];
char lname[11];
};
然后我想初始化一个结构数组时
for (i = 0; i < 12; i++)
{
planes[i].seat = i;
planes[i].flag = 0;
planes[i].fname[11] = ""; //即初始化一个空名字符数组
planes[i].lname[11] = "";
}
最后两个等号“=”下面出现了波浪线,一看,发现是
Error:不能将“const char *” 类型的值分配到"char"类型的实体
请问怎么回事?怎么办?

[解决办法]

C/C++ code
planes[i].fname[11] = ""; //即初始化一个空名字符数组planes[i].lname[11] = "";
[解决办法]
首先,你初始化的下标越界了。
[解决办法]
""是字符串,怎么可以赋给char
即使不是字符串,planes[i].fname[11]也越界了 11
[解决办法]
字符串返回的是字符串的地址 (const char *)
[解决办法]
可以这样。
C/C++ code
#include<iostream>using namespace std;struct plane {    int seat;    int flag;    char fname[11];    char lname[11];};int main(){    plane planes[12];    for (int i = 0; i < 12; i++)    {        planes[i].seat = i;        planes[i].flag = 0;        strcpy(planes[i].fname, "");        strcpy(planes[i].lname, "");    }    return 0;} 

读书人网 >C语言

热点推荐