21st-Oct 时对时错的方向指令string数组

来源:互联网 发布:服务器安装mysql数据库 编辑:程序博客网 时间:2024/05/18 00:27

Method1: 直接记录所有位置,存储到char [ ] 数组里面,然后根据此array[ ]信息判断换乘+终点是否为车站
问题:char[ ]数组尾全是乱码 ,这样使得程序认为坐标记录本身就是这样的,从而导致终点不是车站的错误

Method2: 利用route转换到string数组,根据string数组长度决定移动的次数,有了移动的次数,就可以只读出char[ ]数组的前多少个字符
问题: route保存了上一次的一些信息,上次的一些信息就被转移到这次来了

Method3: 先将route拷贝到一个新的char[ ]数组里,这样就不会保留有上一次残存的信息
问题:这样做,新的char[ ]数组里确实没有上次的一些信息,取而代之的是乱码

case1:S,S,SE,S           <-这是利用cout<<route_real显示出来的路经S,S,SE,S,5a        <-这是利用isalnum作为限制条件得出的现实路经is an invalid route (Invalid direction)  <-有5a在显然是会被判定为无效路经这样正好说明了时对时错的问题:刷出的随机乱码不一定是字母数字,刷出符号的时候会被isalnum截停,刷出字母数字的时候会被认为也是路经的一部分,导致无效路经错误

因此问题是:在录入路经信息的时候,用isalnum抵挡不了乱码刷出字母数字的问题,那应该怎么正确的将信息录入string数组里

问题解决:非常弱智的错误

 问题的出现的确是因为,无论是Method1中的travel[ ]乱码还是Method3中的route_real[ ]乱码 都是因为:char[ ]型数组尾部一定会类型是数字/字母/其他符号的 乱码

那如何正确遍历char[ ]数组?
char[ ]型数组尾部乱码的随机性决定了在遍历的时候,一定不能用对尾部字符类型 判断的方法作条件,如

 1.isalnum(array[i]) != 0   <-S,S,SE,S,5a,多了一个5a   2.array[i]!='\0'   <-S,S,SE,S,>, 多了一个'>'      

因为这些方法全是用的严格标准来做出判断,因此对于并不严格的char[ ]如何获得长度?用不严格的方法获得长度

  正确方法:   i< strlen(array)

正如对于cout <

原创粉丝点击