2

2つの質問があります。

Cでファイルの配列を作成したいのですが、前にサイズをmallocする必要があるかどうかわかりません。FILE**ファイルを配列として使用するだけですか、それとも前にmallocする必要がありますか。また、スペースを確保する必要がある場合、4バイト(x86)を予約する必要がありますか?

変数"charextra [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;
}

ところで、これらの余分なバイトを追加する必要があります。

4

1 に答える 1

2

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);

変数"charextra [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);
于 2012-12-31T12:00:59.527 に答える