什么是在struct中分配数组的正确方法

时间:2017-09-30 11:13:29

标签: c

我是一个总菜鸟所以这可能完全没有,但为什么

struct staff{
    int id;
    char lastdate[8];
    char codeid[8];
}; 

在main中我从Mysql中获取数据并且:

...
while((row = mysql_fetch_row(confres)))
{
    char *codeid = row[0];
    char *maxdate = row[1];

    info[i].id=i;
    strcpy(info[i].codeid, codeid);
    strcpy(info[i].lastdate, maxdate);

    i++;
}
...

lastdate的形式为YYYYMMDD,codeid为字符串。

打印数组时为什么'lastdate'没问题但是字符串的codeid只是空的?

ID: 0 
   SHORT:  
   LAST DATE : 20170929 

ID: 1 
   SHORT:  
   LAST DATE : 20170929 
...

1 个答案:

答案 0 :(得分:2)

你需要使lastdate大到足以容纳日期的8个字符加上空终止符,所以结构应该是:

struct staff{
    int id;
    char lastdate[9];
    char codeid[8];
};

你在数组外写字,导致未定义的行为。