使用环境(蓝色粗体字为特别注意内容)
1、软件环境:Keil MDK 5.15
2、硬件环境:STM32F103C8T6最小系统
今天在进行STM32编程的时候出现一个奇怪的错误,程序阻塞在一个函数里面,查了半天发现阻塞在sprintf函数中!!!我们来看看问题现场。
串口打印了第一句,就卡死了,下一句没有执行到。
查看了原因如下
void foo(char *path)
{
...
printu("enter dir:%s\r\n", path);
sprintf(path + i, "/%s", fn);
printu("enter1 dir:%s\r\n", path);
...
}
调用 foo("0:");
造成对path数组的访问越界了!调用的时候写成如下形式即可:
char path[10] ="0:";
foo(path);