用DEV-C++能正确显示结果,但VS却报错,找不出原因。。。

发布于 2021-11-03 11:02:06 字数 918 浏览 929 评论 4

#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

深巷少女 2021-11-08 09:51:01

上面这位兄台正解

sizeof是把''也计算在内的,不需要减1

猫烠⑼条掵仅有一顆心 2021-11-08 01:08:01

嗯 谢谢你 改正后结果正确了 不过在dos下正确显示结果后,提示“按任意键继续……”,平时随意按一个键就退出,这次我按一个键后,dos下再次出现了这个提示,然后我再按一次键才真的退出,这个小问题很奇怪。。。。。还有,为啥我那原先的程序在DEV-C++下会通过并显示正确结果呢?我也想明白这个,不知道您知不知道?

自此以后,行同陌路 2021-11-04 21:07:24

dos的问题不晓得,我是08。在DEC-C++里面,char数组越界后,得到的还是“”,所以循环可以正常退出。在VS里面,得到的是“?”。你自己调试一下就知道了。这两个IDE用的编译器不同导致的吧。

风柔一江水 2021-11-04 07:22:04

if(size == j-1)

貌似循环退出条件不对。size==j吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文