linux 文件读取段错误 分数不多,请大虾帮忙..... 目的在linux操作系统下使用C语言实现读取磁盘文件内容

2024-11-19 19:17:24
推荐回答(2个)
回答1:

下用mingw
gcc-3.4.5
编译通过
输出10

#include

#define MaxSize 30

typedef int T;

typedef struct pqueue{
int size;
int MaxHeap;
T Element[MaxSize];
}PQueue;

T IsEmpty(PQueue *p)
{
return p->size<1;
}

T IsFull(PQueue *p)
{
return p->size>=p->旦虚MaxHeap-1;
}

void CreateHeap(PQueue *p)
{
p->size=0;
p->MaxHeap=20;
}

void AdjustDown(T heap[],int r,int n)
{
int child=2*r;
T temp=heap[r];
while(child<=n){
if(childheap[child+1])
child++;
if(temp<=heap[child])
break;
heap[child/2]=heap[child];
child*=2;
}
heap[child/2]=temp;
}

void AdjustUp(T heap[],int n)
{
int i=n;
T temp=heap[i];
while(i!=1&&temp heap[i]=heap[i/2];
i/=2;
}
heap[i]=temp;
}

void Append(PQueue *p,T x)
{
if(IsFull(p)){
printf("over flow!");
}
else{
p->Element[++(p->size)]=x;
AdjustUp(p->Element,p->size);
}
}

void Serve(PQueue *p,T *x)
{
if(IsEmpty(p)){
printf("Under flow!");
}
else{
*x=p->Element[1];
p->Element[1]=p->轮宴Element[p->size--];
AdjustDown(p->Element,1,p->size);
}
}

int main()
{
PQueue pq;
PQueue *p=&pq;

T x;
T *q=&x;

CreateHeap(p);
Append(p,10);
Append(p,32);
Append(p,21);

Serve(p,q);
printf("%d\n"腊迟银,x);

return 0;
}

回答2:

从目缺盯前代码和你的问题看,主函数 互斥量没有初始化啊
pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL);
还埋庆有在主函数free(fp)干嘛 你并没有在堆上分配空间,不需要free的 至于fp= NULL也没有必要

目前来看问题就这些 还有什么弯扮握问题 给我留言