您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页strncat函数使用时出现的bug

strncat函数使用时出现的bug

来源:欧得旅游网

程序要实现的功能是从字符串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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务