我正在实现一个基本的 SJF 算法。这只是根据突发时间对进程进行排序,并同时对各个进程号进行排序。b[]
是一个用于爆发的数组并p[]
存储进程号。我在编译时收到以下错误:
sjf.c: In function ‘main’:
sjf.c:23:10: warning: comparison between pointer and integer [enabled by default]
sjf.c:25:10: warning: comparison between pointer and integer [enabled by default]
sjf.c:39:10: warning: comparison between pointer and integer [enabled by default]
不仅如此,在我在 Linux Mint 15 的终端中运行程序后,执行因“分段错误”而终止。以下是示例输出:
enter number of jobs2
Enter burst time12
21
Segmentation fault
我的代码如下:
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
main()
{
int k;
int c;
int b[100];
int n[100];
int a;
int i;
int j;
printf("enter number of jobs");
scanf("%d",&a);
printf("Enter burst time");
for(i=0;i<a;i++)
{
scanf("%d",&b[i]);
n[i]=i;
}
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(b[j]>b[j+1])
{
k=b[j];
b[j]=b[j+1];
b[j+1]=k;
c=n[j];
n[j]=n[j+1];
n[j+1]=n[j];
}
}
}
for(i=0;i<n;i++)
{
printf("burst time for process %d = %d ",n[i],b[i]);
}
}
我该如何解决这个问题?