2011-11-06 2 views
0

읽기 기능을 사용하여 텍스트 파일을 읽고 버퍼에 저장하려고합니다. 그런 다음 파일을 다시 검사하여 변경 사항이 있는지 확인하고 EOF에 도달 할 때까지 동일한 버퍼 (추가)에 메모리를 재 할당하고 내용을 문자 단위로 저장해야합니다.읽기 함수 : 버퍼 복사, 메모리 재 할당

int fileSize=0; 
fileSize=fileStat.st_size; /*fileSize is how many bytes the file is, when read initially*/ 

char buf[fileSize]; 
read(0, buf, fileSize); 

/*now, I have to check if the file changed*/ 
int reader; 
void *tempChar; 
int reader=read(0, tempChar, 1); 
while(reader!=0){ 
    /*this means the file grew...I'm having trouble from here*/ 

나는 많은 것들을 시도했지만 내가 "BUF"에서 "tempChar"에서 내용을 추가 할 때 항상 문제가 결국 : 내 코드는 지금까지 다음과 같습니다. 나는 realloc 함수를 사용하는 것을 안다.하지만 나는 여전히 문제가있다. 어떤 도움을 주시면 감사하겠습니다.

감사합니다.

+1

당신이 문제가있는 코드를 붙여 당신이 겪고있는 문제를 설명 할 수 있습니다. 또한 처음에'tempChar'를 어떻게 초기화하는지 보는 것이 도움이 될 것입니다. (붙여 넣기 한 코드는'read'를 호출 할 때 전혀 초기화하지 않고이 코드를 사용합니다.) –

답변

1

정적으로 할당 된 메모리에는 realloc()을 사용할 수 없습니다.

이렇게하려면 포인터를 사용하고 동적으로 메모리를 할당해야합니다.

예 :

char *buf; 
buf = malloc(fileSize); 
+0

@sarnold : "할당의 크기를 합리적으로 확인"하지 않으면'malloc'의 반환 값을 검사합니다 널 (NULL) 포인터의 경우. 당신이 비합리적인 것으로 생각하는 것이 미래에 아주 합리적 일 수 있습니다. 성공적인 동적 할당을 확인하는 표준 방식을 우회하는 이유는 무엇입니까? –

+0

@EdS., 내가 회고 적으로 그것을 읽을 때 그것은 어리석게 보인다. – sarnold