请各位高手指教!

来源:互联网 发布:软件测试手册怎么写 编辑:程序博客网 时间:2024/04/27 01:48
我在编写OS的PCB时出现的一个小问题:
void ReadPCB(PCB pcb[])
{
    FILE *fp;
    if((fp=fopen("pcb.dat","rb"))!=NULL)
        fread(pcb,sizeof(PCB),10,fp);
    else
    {
        int i;
        for(i=1;i<=10;i++)
            pcb[i].num=-1;
     }
    fclose(fp);
 }

void Del(PCB pcb[],int index)
{
    pcb[index].num=-1;
 }

int Add(PCB pcb[],SPCB pdata)
{
    int i;
    int result=FALSE;
    for(i=1;i<=10;i++)
    {
        if(pcb[i].num==-1)
        {
            memcpy(&pcb[i],pdata,sizeof(PCB));
            result=TRUE;
            break;
         }
     }
    return result;
 }


其中pcb[i].num是一个int类型,就可以认为其值等于-1时这个pcb[i]没有用过,便可以给pcb[i]赋值.
但是假如pcb[i].num是char类型的话我可以编写pcb[i].num='0',按语法来说是没有错误的
可以运行时却出错了;提示说:
void Del(PCB pcb[],int index)
{
    pcb[index].num='0';
 }
中pcb[index].num必须是逻辑0或是一个非0值.
我试了好几种方法都不行.
请各位指教一下.
谢谢!!!
原创粉丝点击