在C中创建Get_Next_Line函数
我必须创建一个C函数,返回从文件描述符读取的一行。我必须定义一个宏在C中创建Get_Next_Line函数,c,string,C,String,我必须创建一个C函数,返回从文件描述符读取的一行。我必须定义一个宏READ_SIZE(可以编辑)。此READ\u SIZE指示每次调用READ()时要读取的字符数。这个数字只能是正数。我还必须使用一个或多个静态变量来保存已读取但未发送回调用函数的字符。一个.C文件(最多5个函数,每个函数最多25行)和一个.h文件。我的函数GNL将返回其返回值,但不带“\n”。如果在文件描述符上没有更多的内容要读取,或者读取时发生错误,则函数返回NULL 以下是该函数的原型: char *get_next_lin
READ_SIZE
(可以编辑)。此READ\u SIZE
指示每次调用READ()时要读取的字符数。这个数字只能是正数。我还必须使用一个或多个静态变量来保存已读取但未发送回调用函数的字符。一个.C文件(最多5个函数,每个函数最多25行)和一个.h文件。我的函数GNL将返回其返回值,但不带“\n”。如果在文件描述符上没有更多的内容要读取,或者读取时发生错误,则函数返回NULL
以下是该函数的原型:
char *get_next_line(const int fd)
允许的功能:malloc
,free
,read
,write
(用于my\u putchar
,my\u putstr
等)
这是我到目前为止所做的,但我真的不知道如何开始。如果你有任何线索让我开始,我会非常感激。如果有必要的话,我会在接下来的十个小时里做这件事。我会经常来这里查看并更新我的进度。如果你有任何问题,问我 这是主文件(在推送我的工作之前,我将删除该文件): 这是我到目前为止的get_next_line.c文件:
int check_backslash(char *buff)
{
int n;
n = 0;
while (buff[n])
{
if (buff[n] == '\n')
return (n);
n++;
}
return (0);
}
char *get_next_line(const int fd)
{
int n;
char *str_to_return;
static int i = 0;
static char buff[READ_SIZE];
n = 0;
while (n = 0)
{
if ((read(fd, buff, READ_SIZE)) == -1)
return (NULL);
n = check_backslash(buff);
}
return (str_to_return);
}
我已经做了一些不同的事情,我不会在这个问题上说,因为我想重新开始。我只是需要一些线索来帮助我开始。再次非常感谢
fgets
或getline
有什么问题?@Olaf我必须重新编码。这是一项工作“我会经常来这里查看并更新我的进度。”。请不要那样做。Stackoverflow不是Facebook。如果您有具体问题,我们很乐意提供帮助。如果您还有其他问题,则应在新问题中单独提问。我们真的不希望FB对您的进度进行更新风格的评论。@kaylum哦,好吧,对不起。所以这个问题很好,但如果我取得一些进展,然后我有另一个问题,我会创建一个新的帖子?嗯,我并不认为你的问题是好的。因为“我从哪里开始”不是一个非常具体的问题。所以我不会亲自回答。但也许其他人会。所以,如果你的问题是具体的,效果最好。有关一些指导原则,请参阅。特别是:“询问现有实施中的具体问题”
int check_backslash(char *buff)
{
int n;
n = 0;
while (buff[n])
{
if (buff[n] == '\n')
return (n);
n++;
}
return (0);
}
char *get_next_line(const int fd)
{
int n;
char *str_to_return;
static int i = 0;
static char buff[READ_SIZE];
n = 0;
while (n = 0)
{
if ((read(fd, buff, READ_SIZE)) == -1)
return (NULL);
n = check_backslash(buff);
}
return (str_to_return);
}