程序要实现的功能是从字符串awmo 2019-12-06 15:23:00中把时间2019-12-06 15:23:00提出来。
出现的bug是Config1_time数组越界,原因是再次给Config1_time赋值前未清空
第一次Get_ConfigTime(time);得到的 Config1_time = 2019-12-0615:23:00
第二次Get_ConfigTime(time);得到的 Config1_time = 2019-12-0615:23:0015:23:00
因为strncpy函数是直接覆盖,所以日期没问题,strncat函数是在字符串后面接着写,so,在2019-12-0615:23:00后面接着写的,就越界了。。。。。
uint8_t Config1_time[20];
void Get_ConfigTime( char *name)
{
char* token = NULL;
char config_name[40];
uint8_t count;
strcpy(config_name,name);
token = strtok(config_name, " ");
count = 0;
while( token != NULL )
{
token = strtok( NULL, " ");
switch(count)
{
case 0:
strncpy(Config1_time,token,10);
count++;
break;
case 1:
strncat(Config1_time,token,8);
count++;
break;
default:break;
}
}
}
int main() {
char time[]={"awmo 2019-12-06 15:23:00"};
Get_ConfigTime(time);
Get_ConfigTime(time);
printf("%s",Config1_time);
getchar();
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务