文件数组和值分配

时间:2012-12-31 11:54:47

标签: c arrays file

我有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;
}

我需要添加额外的字节btw。

1 个答案:

答案 0 :(得分:3)

  

我想在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);