2012-12-31 4 views
2

두 가지 질문이 있습니다.파일 배열과 값 할당

C에서 파일 배열을 만들고 싶습니다.하지만 전에 크기를 malloc할지 말아야할지 모르겠습니다. FILE ** 파일을 배열로 사용하거나 malloc해야합니까? 전에. 그리고 공간을 확보해야한다면 4 바이트 (x86)를 예약해야합니까?

"char extra [8] = {0xAE00AF00B000B100};"변수가 있습니다. 그리고 그것을 다른 char array [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을해야 여부를 확실하지 않다 또는 I을 전에 그들을 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); 

I 변수가 "여분의 숯 [8] = {} 0xAE00AF00B000B100;" 그리고 그것을 다른 char array [24]의 끝에 할당하려고합니다. 직접 또는 for 루프를 사용하여 모든 값을 입력 할 필요없이이를 수행하는 더 빠른 방법이 있습니까?

표준 C 라이브러리 (그래서이 for 루프보다 빠를 것이다) 많은 컴파일러에 내장되는 함수 memcpy을 제공한다.

#include <string.h> 

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

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