rtthread 4.0.3版本:
atoi函数解析“6”、“8”、“9”开头的字符串出错,转换结果为0
标准库的问题?
测试程序:
int atoi_test(char argc,char **argv)
{
rt_kprintf("argv[1] : %d\n",atoi(argv[1]));
return RT_EOK;
}
MSH_CMD_EXPORT(atoi_test,atoi test);
msh />atoi_test 123
argv[1] : 123
msh />atoi_test 60
argv[1] : 0
msh />atoi_test 8
argv[1] : 0
msh />atoi_test 89
argv[1] : 0
msh />atoi_test 789
argv[1] : 789
msh />atoi_test 10
argv[1] : 10
你同时把atoi的入参也打出来看下:
int atoi_test(char argc,char **argv)
{
rt_kprintf("argv[1] (%s) : %d\n", argv[1], atoi(argv[1]));
return RT_EOK;
}
MSH_CMD_EXPORT(atoi_test,atoi test);
怀疑入参就已经不对了。
入参是对的
int atoi_test(char argc,char **argv)
{
rt_kprintf("argv[1] : %s , atoi(argv[1]) = %d\n",argv[1],atoi(argv[1]));
return RT_EOK;
}
MSH_CMD_EXPORT(atoi_test,atoi test);
msh />atoi_test 8
argv[1] : 8 , atoi(argv[1]) = 0
msh />atoi_test 1
argv[1] : 1 , atoi(argv[1]) = 1
msh />atoi_test 123
argv[1] : 123 , atoi(argv[1]) = 123
msh />atoi_test 658
argv[1] : 658 , atoi(argv[1]) = 0
测试有好多数字转换不过来
在另外的工程里测试都正常着呢,我重构下工程再试下