memory函数

题目:根据一系列指令操作一段内存。指令有两种,set和copy。set的格式是set <from> <size> <value>:将这段内存中from开始size长度赋值为valuecopy的格式是copy <from> <size> <to>:将from开始的内存赋值到to的位置,长度为size以byte为单位。其中from, to, size 都是非负整数,value在byte范围内。内存初始值应为0

输入:多组数据,每组数据包括整数m、n,m为内存的长度,以byte为单位,n为指令的个数,其后n行包括n条指令,2<=m<=20, 1<=n<=10。输入数据保证不越界。

输出:每组数据一行,用16进制输出最后的内存值,16进制中的ABCDEF用大写字母

请将代码修正后提交:

#include <stdio.h>

#include <string.h>

int main() {

int m, n;

char buf[20], cmd[5];

int i;

int from, size, to_value;

while (scanf("%d%d", &m, &n) != EOF) {

memset(buf, m, 0);

for (i = 0; i < n; i++) {

scanf("%s%d%d%d", cmd, &from, &size, &to_value);

if (cmd[0] == ‘s‘) {

memset(buf + from, size, to_value);

} else {

memcpy(buf + to_value, buf + from, size);

}

}

for (i = 0; i < m; i++) {

printf("%02X", buf[i]);

}

printf("\n");

}

return 0;

}

输入

多组数据,每组数据包括整数m、n,m为内存的长度,以byte为单位,

n为指令的个数,其后n行包括n条指令,2<=m<=20, 1<=n<=10。输入数据保证不越界。

输出

每组数据一行,用16进制输出最后的内存值,16进制中的ABCDEF用大写字母

样例输入

5 1 set 1 3 32

样例输出

0020202000

修改如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main() {
 4     int m, n;
 5     char buf[20], cmd[5];
 6     int i;
 7     int from, size, to_value;
 8     while (scanf("%d%d", &m, &n) != EOF) {
 9         memset(buf, 0, m);
10         for (i = 0; i < n; i++) {
11             scanf("%s%d%d%d", cmd, &from, &size, &to_value);
12             if (cmd[0] == ‘s‘) {
13                 memset(buf + from, to_value, size);
14             } else {
15                 memmove(buf + to_value, buf + from, size);
16             }
17         }
18         for (i = 0; i < m; i++) {
19             printf("%02X", buf[i]);
20         }
21         printf("\n");
22     }
23     return 0;
24 }

代码不是我修改的,同学帮我看的。

下面是三个需要了解的函数,我在百度上找到的,虽然不太精确,但也可以懂了。

http://baike.baidu.com/link?url=yOyPxGIYBZrTpi5_AqCNZVJ2QoG6I5yuVfVgjZRvzWwMFVH7_-mhoqzGsGFVm7uir698K9bjy_1O2vY8aY1Ky_

http://baike.baidu.com/link?url=ovGppkijQ9ODwKa1Pm43gllSTBL3dIQkmsaXQXl6JSMpsudOpaorA0eJl_npokIgQgQhzt0fXJ1r9e2n6gRMVK

http://baike.baidu.com/link?url=B-ZYULjMcrjtJ9DVLXzhIpFveAwnV4NOlxmYqEQjxIITntepIcWE8ELmm7hdGPgy0pYBWP_kzRqj3rTu1-O1v_

时间: 2024-10-27 10:01:50

memory函数的相关文章

Ubuntu 下matlab 查看memory函数

function checkmemory %Copyright (c) 2014,Lv Qi %All rights reserved. % %Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: % % Redistributions of source code

php中对共享内存,消息队列的操作

http://www.cnblogs.com/fengwei/archive/2012/09/12/2682646.html php作为脚本程序,通常生命周期都很短,如在web应用中,一次请求就是php运行的 一个周期,请求结束则生命周期截止.所以php在处理需要共 享的资源时,一般会将共享数据保存在数据库或dbm之类的文件中,再者就是利用内存实现共享.你可以选择已有的工具辅助你,像memcache:也可以自 己编写代码访问操作系统的共享内存段. php中对共享内存段的操作有两组函数:Syste

各种保护机制绕过手法

一.绕过GS编译选项 ●原理:通过VC++编译器在函数前后添加额外的处理代码,前部分用于由伪随机数生成的cookie并放入.data节段,当本地变量初始化,就会向栈中插入cookie,它位于局部变量和返回地址之间 ●绕过方法: 1.猜测/计算cookie Reducing the Effective Entropy of GS Cookies:http://www.uninformed.org/?v=7&a=2&t=html 至从覆盖SEH的方法出现后,这种方法目前已基本不用了,它没有后面

【转】自旋锁及其衍生锁

原文网址:http://blog.chinaunix.net/uid-26126915-id-3032644.html 自旋锁 自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁.自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞.自旋锁的忙等待浪费了处理器的时间,但时间通常很短,在1毫秒以下. 自旋锁用于多个CPU系统中,

OpenCL中的half与float的转换

在kernel中使用half类型可以在牺牲一定精度的代价下来提升运算速度. 在kernel中, 可以比较方便的对half数据进行计算, 但在host上的, 对half的使用就没那么方便了. 查看cl_float的定义:typedef uint16_t cl_half __attribute__((aligned(2)));可知其本质是一个uint16_t. 所以, 如果直接拿cl_float的内存的值来使用的话, 系统会把它当做一个uint16_t来解析. 一般来说, 我们遇到最多的情况可能是在

玩转 RTC时钟库 DS1302

1.前言 ????最近博主在弄8266编程的时候,偶然发现两个全新时钟模块压仓货: DS1302 DS3231 ????为了避免资源浪费以及重复编写代码,博主还是抱着尝试的心态去寻找能够同时兼容 DS1302.DS3231甚至其他的时钟模块的第三方库.终于,还是被我找到了 -- Rtc 时钟库. 2.RTC 2.1 简介 Arduino Real Time Clock library(Arduino平台的实时时钟库) 支持DS1302.DS1307.DS3231.DS3234 英文文档参考 wi

jQuery 源码分析(十八) ready事件详解

ready事件是当DOM文档树加载完成后执行一个函数(不包含图片,css等),因此它的触发要早于load事件.用法: $(document).ready(fun) ;fun是一个函数,这样当DOM树加载完毕后就会执行该匿名函数了 ready有一个简写,可以直接传入$(fun)即可,这是因为在jQuey内部也定义了一个$(document)的jQuery对象,和我们在上面的写法是一样的 ready事件和window的onload区别: ready事件 ;等dom树载完毕后就可以执行 onload事

android createbitmap函数内存溢出,求解怎样进行处理out of memory溢出问题

android createbitmap函数内存溢出,求解怎样进行处理out of memory溢出问题 android createbitmap函数内存溢出,求解怎样进行处理out of memory溢出问题 android createbitmap函数内存溢出.求解怎样进行处理out of memory溢出问题 局部核心代码: bitmap = Bitmap.createBitmap(mSize.x, mSize.y, Config.ARGB_8888); cacheBitmap = Bit

delphi.memory.分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同

来自:http://www.cnblogs.com/qiusl/p/4028437.html ------------------------------------------------------------------ 我估摸着内存分配+释放是个基础函数,有些人可能没注意此类函数或细究,但我觉得还是弄明白的好. 介绍下面内存函数前,先说一下MM的一些过程,如不关心可忽略: TMemoryManager = record GetMem: function(Size: Integer): P