如何在 C 中使用 getline 函数?[复制]

how can I use getline function in c? [duplicate]

提问人:Burhan Aijaz 提问时间:1/1/2023 更新时间:1/1/2023 访问量:185

问:

我正在尝试使用 getline() 函数。我想我使用的语法是正确的,而且我还包含了 #include< stdio.h> 头文件。尽管如此,它仍然显示 [Error] 'getline' 未在此范围内声明

这是我的代码

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char *str;
    int bytes_read;
    int size=10;
    printf("please enter a string");
    str=(char *)malloc(size);
    bytes_read=getline(&str,&size,stdin);
    puts(str);
}
C 头文件 turbo-c++ 未定义函数

评论

2赞 Dúthomhas 1/1/2023
Borland 的 Turbo C 遵循古老的标准。即使是现代版本也没有像 .(我想。getline()
1赞 Some programmer dude 1/1/2023
除非你使用类Unix环境(如CygwinWindows Subsystem for Linux、Linux in a virtual machine,或者MSYS2)或下载一个有它的库,否则你不能。
1赞 David C. Rankin 1/1/2023
我再来谈谈 MSYS2 -- 它是一个非凡的 Windows 构建环境,它提供了(出于所有实际目的)在 Windows 中本地运行的 Linux 终端,而没有完全虚拟化操作系统的开销。它拥有最新的 gcc 和所有 Linux 实用程序中的最新功能,并使用 Archlinux 的包管理器来保持所有内容的最新状态。pacman
1赞 Tom Karzes 1/1/2023
int size需要 .由于要将其地址传递给 ,因此它必须具有正确的大小。size_t sizegetline
1赞 Some programmer dude 1/1/2023
另一方面,将分配内存本身,以适应整行。初始化为 和 ,并会自动为您处理它。此外,在 C 中,您不应该强制转换 malloc 的结果(或任何返回的函数)。getlinestrNULLsize0getlinevoid *

答:

0赞 Ali Ghelichkhani 1/1/2023 #1

getline 是一个 POSIX 函数,而 Windows 不是 POSIX,因此它没有一些可用的 POSIX C 函数。

您需要定义功能宏_GNU_SOURCE,以便使其可用于您的代码。

#define _GNU_SOURCE