Chinaunix

标题: 段错误 [打印本页]

作者: kuluwang    时间: 2008-11-26 22:25
标题: 段错误
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define M  3           //define ResouceSetNumber=3
#define N  5           //define ProcessNumber=5
int   R[3]={10,5,7};       //define ResouceInstanceNumber
typedef struct Process{
     int   Max[N][M];
     int   Allocation[N][M];
     int   Need[N][M];     int   Request[N][M];
   }table;
int   main(void)
{
   table t;
   int   Available[M],sum;
   int   i,j;
   srand((int)time(0));
   for(i=0;i<N;i++)
    for(j=0;j<M;j++)
    {            
    t.Max[j]=1+rand()%(R[j]+1);
    }
   for(i=0;i<N;i++)   
    for(j=0;i<M;j++)     
    {      
       t.Allocation[j]=rand()%(t.Max[j]+1);  //段错误
     t.Need[j]=rand()%(t.Max[j]+1);        //段错误
    }
   for(i=0;i<N;i++)
     for(j=0;j<M;j++)
     {
       if(t.Allocation[j]<t.Need[j])
         t.Request[j]=t.Need[j]-t.Allocation[j];
     }
   for(j=0;j<M;j++)
    {   
       for(i=0;i<N;i++)
       sum+= t.Allocation[j];  
       if(sum<R[j])      
       Available[j]=R[j]-sum;     
    }
   return 0;
}


请问以下各位大侠 编译后无错
运行时  在程序指定的行发生段错误
怎么解决


[ 本帖最后由 kuluwang 于 2008-11-26 22:28 编辑 ]
作者: ynchnluiti    时间: 2008-11-26 23:51
t.Max[j]=1+rand()%(R[j]+1);
..
t.Request[j]=t.Need[j]-t.Allocation[j];

你编译通过了吗
作者: eveson    时间: 2008-11-27 10:01
for(i=0;i<N;i++)   
    for(j=0;i<M;j++)     
    {      
       t.Allocation[j]=rand()%(t.Max[j]+1);  //段错误
     t.Need[j]=rand()%(t.Max[j]+1);        //段错误
    }

有i的什么事啊?
作者: MMMIX    时间: 2008-11-27 11:07
标题: 回复 #1 kuluwang 的帖子
代码用 [code][/code] 括起来。
作者: ynchnluiti    时间: 2008-11-27 11:29
原帖由 eveson 于 2008-11-27 10:01 发表
for(i=0;i
  1. t.xxx[j] 之类的好像都是 t.xxx[i][j]
复制代码

作者: kuluwang    时间: 2008-11-27 12:21
标题: 回复 #3 eveson 的帖子
发表的时候  是t.max[j]   不知道怎么看不到那个i 部分
作者: kuluwang    时间: 2008-11-27 12:22
标题: 回复 #2 ynchnluiti 的帖子
编译的时候 通过了啊
作者: ynchnluiti    时间: 2008-11-27 12:44
原帖由 kuluwang 于 2008-11-27 12:21 发表
发表的时候  是t.max[j]   不知道怎么看不到那个i 部分

嗯。不用[code][/code],代码中的[ i ]显示不出来
作者: ynchnluiti    时间: 2008-11-27 12:56
原帖由 eveson 于 2008-11-27 10:01 发表
有i的什么事啊?

eveson已经说了。for(j=0;i<M;j++)这句写错了。
作者: kuluwang    时间: 2008-11-27 17:56
标题: 回复 #9 ynchnluiti 的帖子
没注意 谢谢了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2