微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c - 如何在没有getline的情况下在输入中查找换行符

如何解决c - 如何在没有getline的情况下在输入中查找换行符

我正在尝试创建自己的“getline”函数

为了做到这一点,我需要找到下一个换行符在输入中的位置。

我正在尝试使用指针 input->_IO_read_ptr函数 memchr

问题在于 input->_IO_read_ptr 指向 NULL。使这个简单的程序以分段错误告终。

有人知道为什么会发生这种情况以及如何解决吗?

谢谢!

int main(int argc,char **argv,char **env)
{
    FILE *stream;
    char *looking = NULL;

    stream = stdin;

    looking = memchr((void *)(stream->_IO_read_ptr),'\n',100);

    return (0);
}

解决方法

(stream->_IO_read_ptr)

前导 _ 对您来说是一个标志,表示不要访问它。

您自己的 getline() 函数应该根据 getc() 实现。

类似的东西

ssize_t mygetline(char **lineptr,size_t *n,FILE *stream)
{
    ssize_t i = 0;
    int c;
    while ((c = getc()) != EOF && c != '\n') {
        if (*n == i + 1) { 
            /* grow buffer */
        }
        lineptr[0][i++] = (char)c;
    }
    lineptr[0][i] = 0;
    return i;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。