参考 http://blog.csdn.net/wolinxuebin/article/details/13995373

在提交这个题的时候总是遇到题目上所说的问题,提交了7次都没有提交成功,但是自己按照测试用例测试的时候感觉都很正常。后来看到上面的那个链接的文章才发现原来是因为我定义数组的长度是50, 题中所述的字符串最大长度是50,而系统的测试用例就是使用50个字符串作为输入,导致数组最后没有了’\0’,其实这里是输出’\0’了,但是数组越界了,所以这里的’\0’就被后面的输入给覆盖了。

而输出printf("%s",array_ptr[temp_line_num])//(array_ptr是二维数组)的时候,数组array_ptr[temp_line_num]仅仅是一个地址,输出函数不知道它的长度,输出结束是以’\0’作为结束标志的。所以第一个输入的字符串在输出的时候会输出直到它遇到'\0'为止

这道题目的调试结果,字符数组大小是50的情况如下输出:

zhangzs@SSDEV016:~/TestZhang/SWTest$ ./DNA
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT


CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA

 

这道题目的调试结果,当我把字符数组大小改成10的情况如下输出:

zhangzs@SSDEV016:~/TestZhang/SWTest$ ./DNA
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT


CCCGGGGGGAATCGATGCAT
AACATGAAGGTTTTGGCCAATTTGGCCAAAGATCAGATTTCCCGGGGGGAATCGATGCAT
GATCAGATTTCCCGGGGGGAATCGATGCAT
ATCGATGCAT
TTTTGGCCAATTTGGCCAAAGATCAGATTTCCCGGGGGGAATCGATGCAT
TTTGGCCAAAGATCAGATTTCCCGGGGGGAATCGATGCAT

由此也可以看出二维数组在内存中的结构,应该是连续存放的

posted on 2015-04-16 14:37  暴走路人甲  阅读(264)  评论(0)    收藏  举报