2012-03-05 2 views
0

내가는 C의 getline 함수 이전에 malloc으로 할당 한 배열을 사용하려면 :C getline 함수를 사용하여 malloc'ed 배열을 올바르게 사용하는 방법은 무엇입니까?

ssize_t getline(char **restrict, size_t *restrict, FILE *restrict) 

다음 코드는 나에게 EXC_BAD_ACCESS를 제공합니다 (코드 = 1, 주소 = 0x400에) :

FILE *in; if ((in=fopen(inpath, "r+w"))==NULL) exit(1); 
char * buf = (char *) malloc (BUFSIZ); // BUFSIZ is constant, equal to 1024 
if (getline(&buf, (size_t *)BUFSIZ, in)<0) return 1; // <--- EXC_BAD_ACCESS 

어떻게해야 작동하도록 코드를 수정 하시겠습니까?

답변

2

지금 당신이하고있는 일은 실질적으로 getline에 주소 1024에 대한 포인터가 있으며 실제로 그것을 역 참조하기를 원합니다. 실제 주소를 두 번째 인수로 전달하고 int을 캐스팅하지 말고 최선을 다하겠습니다.

size_t size = BUFSIZ; 
getline(&buf, &size, in); 
+0

대단히 고맙습니다. 문제가 버퍼 주변에 있다고 생각하여 잘못된 방식으로 이동했습니다 ... –

관련 문제