用DEV-C++能正确显示结果,但VS却报错,找不出原因。。。
#include <stdio.h> #include <stdlib.h> #include <string.h> void main() { int size; char str[] = {'a','b','c','d','','y','a','n','g','','n','a','o','','c','h','u','n',''}; void print_content(char string[],int size); size = sizeof(str); print_content(str,size); } void print_content(char string[],int size) { int i = 0; int j = 0; int strLenTemp = 0; int k = 0; int i_temp = 0; struct memory { char content[20]; }buffer[20]; while(1) { while(string[j] != '') { buffer[i].content[strLenTemp++] = string[j]; j++; } buffer[i].content[strLenTemp++] = ''; j++; if(size == j-1) break; else { i_temp = i; i++; strLenTemp = 0; continue; } } for(i = 0;i <= i_temp;i++) { printf("%sn",buffer[i].content); } system("pause"); }
上面这段代码,在dev-C++下能正确运行,结果就是把abcd yang nao chun分别打印出来。但是在VS下运行,什么都不打印,dos窗口出来一会后弹出工作已停止。。。我汗啊。。。向大家求助。。。我用的是vs2010。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
上面这位兄台正解
sizeof是把''也计算在内的,不需要减1
嗯 谢谢你 改正后结果正确了 不过在dos下正确显示结果后,提示“按任意键继续……”,平时随意按一个键就退出,这次我按一个键后,dos下再次出现了这个提示,然后我再按一次键才真的退出,这个小问题很奇怪。。。。。还有,为啥我那原先的程序在DEV-C++下会通过并显示正确结果呢?我也想明白这个,不知道您知不知道?
dos的问题不晓得,我是08。在DEC-C++里面,char数组越界后,得到的还是“”,所以循环可以正常退出。在VS里面,得到的是“?”。你自己调试一下就知道了。这两个IDE用的编译器不同导致的吧。
if
(size == j-1)
貌似循环退出条件不对。size==j吧