2012-12-31 79 views
2

的我有2個問題。陣列文件和價值分配

我想創建C.文件的數組,但我不知道我是否有之前或not.Can我只是用文件中的文件的malloc大小**數組或我必須他們的malloc之前。如果我必須騰出空間,是否需要保留4個字節(x86)?

我有變量 「字符額外[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添加這些額外的字節。

+0

'man memcpy','man memmove'。 –

回答

3

我想創建C.文件的數組,但我不知道我是否有 之前或not.Can我只是用文件中的文件的malloc大小**作爲 數組或做我必須以前使用malloc。如果我必須做出 空間,做我需要保留4個字節(86)?

如果您需要有文件的數組,可以使用指針數組如下:

#include <stdio.h> 

FILE *array[NB_FILES]; 

或者你可以動態地做,如果NB_FILES在運行時才知道。

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

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

我有變量 「字符額外[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);