帮我看下这段程序还有这个错误好吗?

CruXStaR 2003-08-23 01:24:09
#include<dos.h>
#include<time.h>
#include<stdio.h>
#define CBLOCK 512
char ndir[]="080";
main()
{
int i=0,suc=0,j=0,m;
int t[3];
char System_Name[64];
char comm[4]="0000";
char cnuma[120];
char cnumb[120];
char com[128];
FILE *cfPtr;
while(comm[0]!='e'||comm[1]!='x'||comm[2]!='i'||comm[3]!='t')
{
for(i=0;i<256;i++)
com[i]=' ';
suc=0;
gets(com);
for(i=0;com[i]!='\0';i++)
{
if(' '==com[i])
j++;
else{
if(0==j)
{
comm[i]=com[i];
m=i;
t[0]=i;
}
if(1==j)
{
cnuma[i-m]=com[i];
m=i;
t[1]=i-t[0]-1;
}
if(2==j)
{
cnumb[i-m]=com[i];
m=i;
t[2]=i-t[1]-t[0]-2;
}
}
}
if(2==t[0]&&'c'==comm[0]&&'t'==comm[1])
{
if(t[2]!=0)
{
printf("cuo wu de ge shi");
break;
}
else
{
suc=1;
}
}}}

然后tc提示al program termination这个错误…………是为什么啊……
...全文
34 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kundy 2003-08-24
  • 打赏
  • 举报
回复
1.char comm[4]="0000";有错,应该改为char comm[5] = "0000";否则会数组界限溢出

2.由数组声明char com[128];而赋值操作不妥,虽然编译没有出问题
for(i=0;i < 256;i++)
com[i]=' ';

3.定义int t[3];应该赋初值,否则如果输入“ct*”(即输入所示的三个参数)会发生错误:
Run-Time Check Failure #2--Stack around the variable "cnumb" was corrupted!

PS:我用的是.net(VC7.0)调试的
nriet8357 2003-08-24
  • 打赏
  • 举报
回复
for(i=0;i<256;i++)
com[i]=' ';
这又是干嘛?
njtu 2003-08-23
  • 打赏
  • 举报
回复
char comm[4]="0000";
应该改为 char comm[5],否则会益处上溢。
Dragon132 2003-08-23
  • 打赏
  • 举报
回复
我编译的没有错误
你程序实现什么功能啊?
leialen 2003-08-23
  • 打赏
  • 举报
回复
没有啊

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧