【问题标题】:Array of files and value assigning [closed]文件数组和赋值[关闭]
【发布时间】:2012-12-31 11:54:47
【问题描述】:

我有 2 个问题。

我想在 C 中创建一个文件数组。但我不确定我是否必须先 malloc 大小。我可以只使用 FILE** 文件作为数组还是必须先对其进行 malloc .如果我必须腾出空间,是否需要保留 4 个字节(x86)?

我有变量“char extra[8] = { 0xAE00AF00B000B100 };”我想将它分配到另一个 char 数组 [24] 的末尾。有没有更快的方法来做到这一点,而不必手动输入每个值或使用 for 循环。

char extra[8] = { 0xAE00AF00B000B100 };
// index is a random place in the string
name[index] = '\0';
i = 0;
if (index > 16) {
    for (i = 24-index; i < 8; i++) {
        index++;
        name[index] = extra[i];
        }
    }
else {
    name[17] = 0xAE;
    name[18] = 0x00;
    name[19] = 0xAF;
    name[20] = 0x00;
    name[21] = 0xB0;
    name[22] = 0x00;
    name[23] = 0xB1;
    name[24] = 0x00;
}

顺便说一句,我需要添加那些额外的字节。

【问题讨论】:

  • man memcpy, man memmove.

标签: c arrays file


【解决方案1】:

我想在 C 中创建一个文件数组。但我不确定我是否 必须先 malloc 大小。我可以使用 FILE** 文件作为 一个数组还是我必须先对它们进行malloc。如果我必须做 空间,我需要保留4个字节(x86)吗?

如果你需要一个文件数组,可以使用如下指针数组:

#include <stdio.h>

FILE *array[NB_FILES];

如果NB_FILES 仅在运行时已知,您也可以动态执行此操作。

#include <stdio.h>
#include <stdlib.h>

FILE **array = malloc(nb_files * sizeof *array);

我有变量“char extra[8] = { 0xAE00AF00B000B100 };”我想将它分配给另一个 char 数组 [24] 的末尾。有没有更快的方法来做到这一点,而不必手动输入每个值或使用 for 循环。

标准 C 库提供函数 memcpy,这是许多编译器的内置函数(因此它会比 for 循环更快)。

#include <string.h>

char array[24];
char extra[8];

memcpy(array + sizeof array - sizeof extra - 1, extra, sizeof extra);

【讨论】:

    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2017-02-22
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多