sprintf cause my program stop working in keil
这是我的主要功能,我不知道为什么当我在 proteos 中模拟它时,我发现代码运行到 sprintf 并且下一行没有运行,当我评论它时”salam”印刷在液晶显示器上
我使用 mingw 编译器并且我已经安装了所有库
诠释主要(无效)
{
/* 用户代码开始 1 */
/* 用户代码结束 1 */
/* MCU 配置——————————————- ————-*/
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ //snprintf(q, 20,”%10d”, 1234567); |
- 您还记得在文件顶部有以下语句: #include <string.h> 吗?
问题从这里开始。
1
|
char q[5] =“salam” ;
|
q 太短,无法存储该单词。它必须至少有 6 个字符长。
当您在数组边界之外写入时,这是未定义的行为。
当你将 q 的长度改为更长时
1
|
来源:https://www.codenong.com/63135593/