首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么这个程序没有异常,但是不能运行

2012-02-05 
为什么这个程序没有错误,但是不能运行我编的顺序表插入的程序,VC中没有错误和警告,但是运行的时候没有结果

为什么这个程序没有错误,但是不能运行
我编的顺序表插入的程序,VC中没有错误和警告,但是运行的时候没有结果,而且vc会说应用程序错误,内存不能为written.但是,我在win-tc中编译成功看到结果了的
#include   "stdio.h "
#define   maxsize   100
typedef   int   ELEMTYPE;
typedef   struct{
ELEMTYPE     data[maxsize];
int   len;
}seqlist;
void   Insertlist(seqlist   *la,ELEMTYPE   x,int   i);
void   main()
{
        ELEMTYPE   x;
        int   i,j;
        int   num=1;
        seqlist   *la;
        char   stop;
        la-> len=1;                 //这里会说la在使用前没有定义,但是他又不报错
        printf( "Please   enter   number   and   position\n ");
        scanf( "%d%d ",&x,&i);
        printf( "Enter   datas\n ");
        for(j=1;;j++)
              {
                scanf( "%3d ",&la-> data[j-1]);
                la-> len++;
                if((stop=getchar())== 's ')
                    break;
                }

        Insertlist(la,x,i);
    for(j=1;j <la-> len;j++)
            {
                printf( "%3d ",la-> data[j-1]);
                num++;
                if(num%10==0)
                printf( "\n ");
                }
   
}
void   Insertlist(seqlist   *la,ELEMTYPE   x,int   i)
{
        int   k;
        if(i <1||i> la-> len+1||la-> len> =maxsize)
                printf( "Position   Error\n ");

        else
        {
                for(k=la-> len;k> =i;k--)
                        la-> data[k]=la-> data[k-1];
                        la-> data[i-1]=x;
                        la-> len+=1;

        }
}



[解决办法]
la只是被定义为一个指向seqlist类型数据的一个指针变量,但是la所指向的数据空间没有被分配,所以la-> len被认为是非法操作,你应该先建立一个seqlist的结构体,如seqlist la1;
然后让la指向la1,la=&la1

热点排行