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 <