读书人

strtok累次调用会出现之前数据重复赋

发布时间: 2013-11-03 15:39:14 作者: rapoo

strtok多次调用,会出现之前数据重复赋值问提
我想用strtok分类处理一个定了格式的字符串,并把相应部分存到结构体中的对象里。
int _tmain(int argc, _TCHAR* argv[])
{
char g_reqinfo[] = "2013/10/16 10:10:10";
struct log_form{//定义结构体变量
char year[4];
char month[2];
char day[2];
char hour[2];
char minute[2];
char second[6];
};/* define struct log_form a */
struct log_form a = {NULL};//初始化为0

strcat(a.year, strtok(g_reqinfo, "/"));
strcat(a.month, strtok(NULL, "/"));
strcat(a.day, strtok(NULL, " "));
strcat(a.hour, strtok(NULL, ":"));
strcat(a.minute, strtok(NULL, ":"));
strcat(a.second, strtok(NULL, " "));
}

printf了一下,发现输出是:
20131016101010
1016101010
16101010
101010
1010
10
为什么会有这种情况?还有怎么实现我想要达到的效果,即每位数据存入到各对象中?谢谢 c strtok
[解决办法]
结构里定义的数组不够大越界操作NULL被覆盖掉,每个数组起码加大1容纳NULL结尾
[解决办法]


struct log_form{//定义结构体变量
char year[5];
char month[3];
char day[3];
char hour[3];
char minute[3];
char second[3];
}; /* define struct log_form a */

读书人网 >C语言

热点推荐