2012-03-05 3 views
0

Я хочу использовать ранее malloc'ed массив с функцией C GetLine:C - как правильно использовать массив malloc'ed с функцией C getline?

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

Большое спасибо, я думал, что проблема вокруг буфера и пошла не так ... –