你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
anobodykey 发表于 2017-7-27 16:16 还是楼主代码有问题吧 其中"Hello %d\n\r\0",这段字符串长度是为10的,当i循环到9时,Dbg_QMsg[9]就是'\0' ...
toofree 发表于 2017-7-27 15:43 程序没有问题,你从哪打印输出的,是从串口吗?如果是串口的话,加个延时看看。 附件是一个软仿真的程序, ...
kylongmu 发表于 2017-7-27 21:14 Hello 0\r\n\0 一共是9个非空字符,第9个(从下标0开始)是\0。 所以,在第46行中,当i为9时,就会执行第50 ...
moyanming2013 发表于 2017-7-27 22:25 你根本一直都是在拿一个“意想”出来的例子在讨论!让别人去测试你的“意想”代码,自己却不测时而且实际 ...
kylongmu 发表于 2017-7-27 17:06 谢谢你的测试,我在你代码基础上改了一下,你的代码不会出问题,因为for循环外层调用次数没有达到数组大小 ...
程序没有问题,你从哪打印输出的,是从串口吗?如果是串口的话,加个延时看看。
附件是一个软仿真的程序,从uart1打印输出,一切正常。
还是楼主代码有问题吧
其中"Hello %d\n\r\0",这段字符串长度是为10的,当i循环到9时,Dbg_QMsg[9]就是'\0'就会退出for循环了那。
论坛里贴代码有的是不能显示的,都注释说明了,还纠结。
谢谢你的测试,我在你代码基础上改了一下,你的代码不会出问题,因为for循环外层调用次数没有达到数组大小。
我在你代码里面设置了2处printf,理论上都是不应该被执行到的,但神奇的是有一条在被调用一定次数后会执行到。
我只有767的板子,还请你再测试下。
修改后代码,直接贴图了,贴源码会显示乱码。
sprintf是在for前面。
楼主,你难道还无视23楼的回复吗?都这么明显了还不清楚?!
楼主你25楼的代码,第43行Dbg_QMsg里面存放的是
Hello 0\r\n\0
一共是9个非空字符,第9个(从下标0开始)是\0。
所以,在第46行中,当i为9时,就会执行第50行的break,从而从for循环中跳出来。
恩,你一定又是笔误,认为break是跳出的if语句吧?!(或当我没说)
1.sprintf会自动补\0,你不用多此一举在Dbg_QMsg中加个\0。
2.你分别在49行和54行加个断点全速运行下,如果停下可看下汇编以及当前的状态是什么样的?
一共是9个非空字符,第9个(从下标0开始)是\0。
所以,在第46行中,当i为9时,就会执行第50行的break,从而从for循环中跳出来。
恩,你一定又是笔误,认为break是跳出的if语句吧?!(或当我没说)
这里break就是跳出for用的,有用break跳出if的用法吗?
1.sprintf会自动补\0,你不用多此一举在Dbg_QMsg中加个\0。这个自动补\0倒是提醒的好,不过去掉后结果一样。
2.你分别在49行和54行加个断点全速运行下,如果停下可看下汇编以及当前的状态是什么样的?
断点进入错误代码,加了个变量k保存for结构里的j,可以看到j变0了,而k保留了原先的值0x0f
你根本一直都是在拿一个“意想”出来的例子在讨论!让别人去测试你的“意想”代码,自己却不测时而且实际的代码有很多错误自己却不去找找问题所在!这怎么能符合实际的呢?因为你实际的代码中:
你无法能保证你所理解的语法是否是正确的!但是你一直保证了这个是正确的,实际是错误多出(先别错误百出了)!
你也无法保证编写的代码是否是正确的!但是你一直保证了这个是正确的,实际是你的所谓的“笔误”很多(如下述)!
你也无法保证编写的代码逻辑是正确的!但是你一直保证代码逻辑没问题,实际情况你自己琢磨吧。
我先不说你代码逻辑执行是否正确,只一看,476行中的for循环,红框处应该是j而不是i吧?这显然是所谓的笔误,再加上一开始的多个语法错误,整个让人抓狂啊!千万别再说往什么mbed提交了代码,那个只是个代码库,还得多修炼才行,省的...
另外,都实际的工程了,别再用i、j、k这种变量名称了,看看,自己都绕进去了,for循环的退出都无法保证,怎么保证与Dbg_QMsg中的内容判断呢?!
其它的不看了,没什么实质的可讨论的了,费时。
再次验证:
多从自身找问题!!
1.语法问题一堆。
2.逻辑实现并不清晰。
3.仍然不相信自己的代码有问题。
你眼睛很尖啊,我刚为了拷贝变量多申请了2个变量,不过结果是一样的,没什么臆想的代码,你太多心思了,一点代码问题就上纲上线。这个代码是我的项目用的,我犯得着在这臆想代码逗大家玩吗?
那个for循环条件不是关键,因为里面有break跳出。
你能正视关键问题吗?
进不了异常状态,能说明问题了吗?