急!!想用C++写一个自动回复的程序,编译和联接都能通过,但是不能执行,一执行就提示停止工作,请高手帮忙

2024-12-02 23:26:24
推荐回答(2个)
回答1:

*num=i-1;这里指针num还没有赋值就使用,编译时显示warning没注意么
warning C4700: local variable 'num' used without having been initialized

把num改成int型就好了,注意最后显示的时候应该是y<=num+1,因为你插入了一个元素

#include
#define max 10
#define true 1
#define flase 0
int insertq(int list[],int num,int i,int x)
{
int j;
if((i<0)||(i>num+1))
{
printf("i值不合法");
return(false);
}
if(num>=max-1)
{
printf("表已满无法再插入");
return(false);
}
for(j=num+1;j>i;j--)
list[j]=list[j-1];
list[i]=x;
num++;
return(true);
}
void main()
{
int i=0,x,num,ch;
int list[max];
printf("Input list:");
while((ch=getchar())!='\n')
{
list[i]=ch;
i++;
}
num=i-1;
printf("insert NO.i");
scanf("%d",&i);
getchar();
printf("insert data:");
x=getchar();
getchar();
insertq(list,num,i,x);
for(int y=0;y<=num+1;y++)
printf("list[%d]=%c\t",y,list[y]);
printf("\n");
}

编译时没有错误只说明你的程序语法正确,未必逻辑正确,还可能发生运行时错误。运行时错误是一个错误的类型,在程序的执行发生。运行时错误表明该方案的设计者或有错误的预期的问题,但改变不了。如果该方案未能要求在执行过程中的有关职能,将有运行时错误弹出您的计算机上。

回答2:

fopen("D:\chat.txt","r")
改成fopen("D:\\chat.txt","r")
先看看这个改了能不能行吧