2012-03-05 59 views
0

我想用先前malloc分配陣列與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

非常感謝你,我認爲這個問題是圍繞緩衝區,並以錯誤的方式... – 2012-03-05 20:45:50