看到一个题目。
期望实现的功能,把所有\0字符移动到字符串结尾
原方案失败了,
改进方案成功了,
在原方案调试时,跑到循环中if为true时函数就结束了,不清楚为什么结束,最终没有实现功能。
我在改进中把pB指针用pA+i代替,方案可以使用,现在我的问题是原方案为什么会失败。
原方案调试
如图,当pB指针指向第一个\0字符时,在进入while循环的一瞬间,整个函数就结束并且return了,我不明白为什么
改进方案也有问题必须输入str[64]等才能成功运行,i的形式使如果字符串后面没有冗余,一定会溢出,目前试了好几个新方案都没有解决,正在改进中。
失败方案
报错,堆栈已损坏,结果出来后,程序崩了
难道这种写法是有问题的?
又一个失败方案
我尝试防止i的溢出,失败了,不能运行
这个报错我还看不懂
根据我的发现1,我现在在尝试用sizeof改进。
有了思路,一切都好办
但是我不确定这些“烫”的码是什么,
我对于“锟斤拷”的原理还有一些印象,
如果这些烫是\0字符的解释错误,那么我已经成功了,现在,新的问题出现了,为什么这些“烫”会打印出来呢?
取得重点进展,基本成功了
最后的问题
就是这些ASCII的-52是怎么来的了
算上字符串char时给我自动在末尾加的\0,七个字符都移动到了末尾,数据处理是成功的,剩下的就是打印方面的问题了。