我需要使用getline()
在C中,但是当我写:
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv) {
char *line;
getline(&line, NULL, stdin);
free(line);
return (0);
}
编译器写error: getline was not declared in this scope
我能做些什么? getline 不是声明在stdio.h
?我以前从未遇到过此类问题。
我使用 GCC GNU 编译器。
你需要定义_GNU_SOURCE
要使用此函数,请在包含之前定义它stdio.h
或将其传递给编译-D_GNU_SOURCE
因为这是一个 GNU 扩展函数。
另一个可能的原因是您的 GLIBC 没有此功能,因此请尝试:
下面的实现may工作(未经测试):
#define INTIAIL_SIZE 100
size_t getline(char **lineptr, size_t *n, FILE *stream)
{
char c;
size_t read = 0;
char *tmp;
if (!*lineptr) {
if (!n)
*n = INTIAIL_SIZE;
tmp = malloc(*n);
*lineptr = tmp;
} else
tmp = *lineptr;
while ((c = fgetc(stream)) != '\n') {
*tmp++ = c;
if (++read >= *n) {
char *r = realloc(tmp, *n * 2);
if (!r) {
errno = ENOMEM;
return -1;
} else
tmp = r;
}
}
*n = read;
return read;
}
您当前遇到的错误:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)