C语言-模拟作业进入内存的过程

本文通过C语言实现了一个简单的模拟内存分配的过程,利用结构体和控制台光标操作展示了首次适应算法。程序创建不同长度的字符串模拟进程,并尝试在结构体中找到合适的位置存储这些进程,以此模拟内存分配。
摘要由CSDN通过智能技术生成

/* 涉及知识点:
1:光标位置的定位与检测
2:结构体的使用
3: 设计构建思想
*/

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <time.h>
/*首次适应算法
实现方法:
1.使用大小sizeof()不一的变量插入结构体,每个大小不一,
2.遍历结构体,将符合大小的变量放入,以此循环
*/
typedef struct{
char a[8];
char b[15];
char c[30];
char d[25];
char e[40];
}str;
//获取一个给定范围的随机数
int sj(int n){
srand(time(NULL));
return rand()%n+1;
}

//控制台光标位置
int getPos(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = {0, 0}; //光标位置
CONSOLE_SCREEN_BUFFER_INFO csbi;

if (GetConsoleScreenBufferInfo(hConsole, &csbi))
{
    //printf("光标坐标:(%d,%d)\n",  csbi.dwCursorPosition.X, csbi.dwCursorPosition.Y);
	return csbi.dwCursorPosition.Y;
}
return 0;

}
//设置光标位置
static void SetPos(int x, int y)
{
COORD point = {x,y};
HANDLE HOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(HOutput, point);
}

void InfoShow(str *x){
int n=1;
int y;

//int i,j;
printf("-------------------------内存状态显示-----------------------\n");
printf("内存序列\t内存中运行的内存\t\t内存大小\n");
y=getPos();
//第一序列
SetPos(0,y);
printf("%d",n++);
SetPos(16,y);
printf("%s",x->a);
SetPos(50,y);
y++;
printf("%d",sizeof(x->a));
//第二序列
SetPos(0,y);
printf("%d",n++);
SetPos(16,y);
printf("%s",x->b);
SetPos(50,y);
y++;
printf("%d",sizeof(x->b));
//第三序列
SetPos(0,y);
printf("%d",n++);
SetPos(16,y);
printf("%s",x->c);
SetPos(50,y);
y++;
printf("%d",sizeof(x->c));
//第四序列
SetPos(0,y);
printf("%d",n++);
SetPos(16,y);
printf("%s",x->d);
SetPos(50,y);
y++;
printf("%d",sizeof(x->d));
//第五序列
SetPos(0,y);
printf("%d",n++);
SetP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值