小编Gui*_*hka的帖子

从不同实例添加集合

我是Smalltalk的新手,我正在尝试做一个非常简单的程序,以这种方式从多个集合中生成一个集合:

假设我有一套军械库,而且每个军械库都拥有自己的武器套装,我想要做的就是编写一个方法,将每个军械库中的所有武器组合起来返回一个集合.

在此先感谢您的帮助!

collections smalltalk

4
推荐指数
1
解决办法
213
查看次数

使用readdir_r读取目录

很长一段时间以来,我一直在检查和使用这个程序而没有成功,希望你能帮助我.

想法是读取存储的目录c_Localpath并将读取的dirs复制到其中c_namesLocal以返回它们.

我在实施中做错了吗?程序打破了strcpy,我不知道为什么.

DIR* ptr_dir = opendir(c_Localpath);

char** c_namesLocal = calloc(1, 256);

    size_t numElements = 0;
    int returnCode =0;
    struct dirent ptr_PrevDirEntry;
    struct dirent* ptr_DirEntry = NULL;
    returnCode = readdir_r(ptr_dir, &ptr_PrevDirEntry,
            &ptr_DirEntry);

    while ((returnCode ==0) && (ptr_DirEntry != NULL)) {
        char* name = c_namesLocal[numElements];
        strcpy(name, ptr_DirEntry->d_name);
        ptr_PrevDirEntry = *ptr_DirEntry;
        returnCode = readdir_r(ptr_dir, &ptr_PrevDirEntry,
                &ptr_DirEntry);
        numElements++;
        c_namesLocal = realloc(c_namesLocal, 256 * numElements);
    }
Run Code Online (Sandbox Code Playgroud)

c readdir

3
推荐指数
1
解决办法
8758
查看次数

在C中读取内存块

我有一个分配,我需要读取和写入一个内存块(预分配),为此,我需要实现两个函数:

memory_read(base,offset,size);
memory_write(base,offset,size,buffer);
Run Code Online (Sandbox Code Playgroud)

到目前为止没问题,我成功实现了写作部分.问题在于memory_read.我需要它来返回一大块数据(可能是void*),然后我可以将它转换为我期待的任何数据并使用它.

仅作为一个例子.假设我已经为该内存编写了一个序列化结构.我想做这样的事情

void *variable;
variable = memory_read(pointer_to_where_it_is,offset,sizeof(some_structure);
(some_structure) variable // and use it for something
Run Code Online (Sandbox Code Playgroud)

这就是memory_read的作用

void *memory_read(void *base, int offset, int size){
    void *buffer;
    buffer = malloc(size);
    memcpy(&buffer,base+offset,size);
    return buffer;
}
Run Code Online (Sandbox Code Playgroud)

当然,由于缓冲区存在于函数堆栈中,我在返回时会丢失对它的引用.

有什么想法怎么做?我不允许老师修改函数参数,否则我会传递&variable作为参数.

谢谢!

c pointers void-pointers memcpy

3
推荐指数
1
解决办法
1866
查看次数

标签 统计

c ×2

collections ×1

memcpy ×1

pointers ×1

readdir ×1

smalltalk ×1

void-pointers ×1