2014-10-10 2 views
-1

문제가 있습니다. 나는 C 코드를 쓰고 있지만, 내 문제는 이것이다.C, 빈 공간에 배열로 쓰기

int func(const char* path, httpCallback_t handlerFunc) { 
    int i; 
    int max = 4; 
    for (i = 0; i < max; ++i) { 
     UriArray[i]; 
     func_ptr[i]; 
    } 
    return 0; 
} 

나는 UriArray []와 [] func_ptr * 경로와 handlerFunc를 추가하지만 제약이 값이 빈 SPAC

감사에로드 될 때마다 점이다

+0

당신은 UriArray 및 func_ptr에 경로와 handlerFunc을 복사해야합니다 : 그것은 같은 뭔가 당신이 현재 크기의 사본을 보관해야하는 경우 배열에 하나의 항목을 추가 할 가능성이 높습니다입니다 (나는 전역 변수라고 가정한다). 복사하지 않으면 데이터를 어떻게 가져올 수 있습니까? (나는 downvote하지 않았다) – vvvv

+1

친절하게 당신의 질문을 다시 말해라. – user1336087

+0

감사합니다. 하지만 UriArray [] 및 func_ptr []에 경로 e handlerFunc를 추가 할 것입니다. 그러나 이러한 값이 빈 공간에로드 될 때마다 제약 조건이 적용됩니다. – luigi

답변

1
UriArray[i]; 

UriArray[i]의 현재 값을 "반환"한 다음 버리는 표현식입니다. 당신이 거기에 뭔가를 저장하려면

42; 

, 당신은 같은과, 그것에 할당해야합니다 :

UriArray[i] = 314159; 

당신에게 돈을 가정하면이 문으로 (부작용 없음) 약으로 유용

UriArray[i] = strdup (path); 
func_ptr[i] = handlerFunc; 

그러나 같은 값으로 배열의 네 가지 항목을 설정합니다 명심 '는 문자열에 대한 백업 저장소를 t을 가지고, 그것은 뭔가를 할 가능성이 높습니다. 아마 당신이 원하는 것이 아닙니다.

int size = 0; 
#define MAX 4 
char *UriArray[MAX]; 
httpCallback_t func_ptr[MAX]; 

int func(const char* path, httpCallback_t handlerFunc) { 
    if size == MAX) return -1; 
    UriArray[size] = strdup (path); 
    func_ptr[size++] = handlerFunc; 
    return 0; 
} 
+0

하지만 문제는 * 경로와 handlerFunc가 동적 인 것입니다. – luigi

+0

@luigi에 의존합니다. 배열 관리 방법. 배열을 채울 때 추가 만 허용하고 실패하는 한 가지 방법을 예로 들었습니다. 다른 방법이 있지만 필요한 행동을 정확하게 지정하기 전까지는 예제를 보여줄 수 있습니다. – paxdiablo

+0

OK! 좋아, 고마워! 문안 인사! – luigi

관련 문제