gpt4 book ai didi

c - 警告 : comparison between pointer and integer and Segment fault in C

转载 作者:行者123 更新时间:2023-12-02 04:58:23 29 4
gpt4 key购买 nike

我正在实现一个基本的 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]);
}
}

我该如何解决?

最佳答案

n 是数组在你的代码中声明为 int n[100];,在 for 循环条件 n 应该是 a :

for(i = 0; i < n; i++){
^
for(j = 0; j < n - 1; j++)
^
both should be a

类似的错误出现在你打印的最后一个 for 循环中。

所以在编程中命名约定很重要,缩进也很重要。

关于c - 警告 : comparison between pointer and integer and Segment fault in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304196/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com