永远在努力 2022-04-17 14:47 采纳率: 33.3%
浏览 19

c++strcpy函数 name赋值给结构体数组 报错:初始值设定相值太多

#include "string.h"

#include<string>
#include<iostream>
using namespace std;
#define n 20
//假定系统中可容纳的数量为n
typedef  struct  jcb
{
    char  name[5];                        //名
    int  length;                            //作长度,所需主存大小
    int  printer;                            //执行所需打印机的数量
    int  tape;                            //执行所需磁带机的数量
    int  runtime;                        //估计执行时间
    int  waittime;                        //在系统中的等待时间
    int  next;                            //指向下一个控制块的指针
}JCB;                                //控制块类型定义
int head;                             //队列头指针定义
int tape, printer;
long memory;
JCB jobtable[n];                        //表
int jobcount = 0;                        //系统内现有数量
void shedule()
//调度函数
{
    float xk, k;
    int p=0, q=0, s=0, t=0;
    do
    {
        p = head;
        q = s = -1;
        k = 0;
        while (p != -1)
        {
            if (jobtable[p].length <= memory && jobtable[p].tape <= tape && jobtable[p].printer <= printer)
            { //系统可用资源是否满足需求
                xk = (float)(jobtable[p].waittime) / jobtable[p].runtime;
                if (q == 0 || xk > k)                //满足条件的第一个或者q的响应比小于p的响应比
                {
                    k = xk;                    //记录响应比
                    q = p;
                    t = s;
                }//if
            }//if
            s = p;
            p = jobtable[p].next;                //指针p后移
        }//while
        if (q != -1)
        {
            if (t == -1)                    //是队列的第一个
                head = jobtable[head].next;
            else
                jobtable[t].next = jobtable[q].next;
            //为q分配资源:分配主存空间;分配磁带机;分配打印机
            memory = memory - jobtable[q].length;
            tape = tape - jobtable[q].tape;
            printer = printer - jobtable[q].printer;
            printf("选中的名:%s\n", jobtable[q].name);
        }
    } while (q != -1);
}//调度函数结束

int main()
{
    char name[4];
    int size=0, tcount=0, pcount=0, wtime=0, rtime=0;
    int p;
    
    //系统数据初始化
    memory = 65536;
    tape = 4;
    printer = 2;
    head = -1;
    printf("输入相关数据(以大小为负数停止输入):\n");
    //输入数据,建立队列
    printf("输入名、大小、磁带机数、打印机数、等待时
cin >> name>>size >> tcount >> pcount >> wtime >> rtime;
    while (size != -1)
    {//创建JCB
        if (jobcount < n)
            p = jobcount;
        else {
            printf("无法再创建\n");
            break;
        }
        jobcount++;
        //填写该相关内容
        char* strcpy(jobtable[p].name, name);//错误在最后这个name下划线了
        jobtable[p].length = size;
        jobtable[p].printer = pcount;
        jobtable[p].tape = tcount;
        jobtable[p].runtime = rtime;
        jobtable[p].waittime = wtime;
        //挂入队列队首
        jobtable[p].next = head;
        head = p;
        // 输入一个数据
        printf("输入名、大小、磁带机数、打印机数、等待时间、估计执行时间\n");
        cin>>name, &size, &tcount, &pcount, &wtime, &rtime;
    }//while
    shedule();                            //进行调度
    return 0;
         
}//main( )函数结束
  • 写回答

2条回答 默认 最新

  • m0_69767758 2022-04-17 15:06
    关注

    下载码来一个

    评论

报告相同问题?

问题事件

  • 修改了问题 4月17日
  • 修改了问题 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价