我是个十足的傻瓜所以这可能是完全不可能的但是为什么

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

我主要是从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
...

最佳答案

您需要使lastdate足够大,以容纳日期的8个字符和空结束符,因此结构应该是:

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

您在数组外部写入,这会导致未定义的行为。

10-05 23:44