【问题标题】:C - how to correctly use malloc'ed array with C getline function?C - 如何正确使用带有 C getline 函数的 malloc 数组?
【发布时间】:2012-03-05 20:30:38
【问题描述】:

我想将以前 malloc 的数组与 C getline 函数一起使用:

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

以下代码为我提供 EXC_BAD_ACCESS (code=1, address=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

我应该如何修改代码以使其正常工作?

【问题讨论】:

    标签: c file getline


    【解决方案1】:

    你现在所做的基本上告诉getline 有一个指向地址1024 的指针,你真的希望它取消引用它。传递一个真实地址作为第二个参数,不要投 int 并希望最好。

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

    【讨论】:

    • 非常感谢,我还以为是缓冲区的问题,走错路了……
    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2020-08-26
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多