尽管导入了 stdio,但 getline 未在此范围内声明

2024-01-18

我需要使用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 没有此功能,因此请尝试:

  • 正在寻找它/usr/include/stdio.h

  • 测试_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700就像手册页所说(包含后features.h)

下面的实现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;
}

您当前遇到的错误:

  • 你没有自由line当你使用它之后

  • 你没有通过line通过引用,因为函数原型是:ssize_t getline(char **lineptr, size_t *n, FILE *stream); hence char **lineptr

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尽管导入了 stdio,但 getline 未在此范围内声明 的相关文章

  • MongoDB C# 驱动程序检查身份验证状态和角色

    这是我使用 MongoDB 身份验证机制登录 MongoDB 的代码 try var credential MongoCredential CreateMongoCRCredential test admin 123456 var sett
  • 模板类包装任意类型/非类型模板类

    假设我有一个模板类base和一个班级wrapper其中包含一个实例化成员base 我想定义班级wrapper这样它依赖于模板参数包 该参数包只是 传递 给实例化成员base 例如 考虑下面的代码 它工作得很好 include
  • 高级 Win32 图像文件 I/O?

    我想在 Windows C 应用程序中将图像文件读入内存 什么是一个相当简单的解决方案 也许类似于 IOS 提供的UIImage 我希望支持合理数量的文件格式 我需要为图像处理的位图提供一些低级访问权限 我在互联网上阅读了很多内容 看起来
  • 如何向 UWP 项目添加 .NET dll 引用?

    我有几个适用于 NETv4 x 的 NET dll 项目 我将版本更改为 4 6 1 并重新构建 没有出现问题 当我尝试从 UWP 项目向它们添加引用时 出现错误 项目的目标是 NETCore 而文件引用的目标是 NET框架 这不是受支持的
  • LINQ to XML - 如何正确使用 XDocument

    现在我首先要说的是 这确实是一项任务 然而 在我遇到 Linq to XML 语法之前 我几乎已经完成了它 我有 2 个课程 曲目和 CD 现在作为作业的一部分 我创建了一张 CD 然后向其中添加了一些曲目 在搜索了大量完美解释了如何从 x
  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 有没有比这更快的方法来查找目录和所有子目录中的所有文件?

    我正在编写一个程序 需要在目录及其所有子目录中搜索具有特定扩展名的文件 这将在本地驱动器和网络驱动器上使用 因此性能是一个问题 这是我现在使用的递归方法 private void GetFileList string fileSearchP
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • _mm_max_ss 在 clang 和 gcc 之间有不同的行为

    我正在尝试使用 clang 和 gcc 交叉编译一个项目 但在使用时发现一些奇怪的差异 mm max ss e g m128 a mm set ss std numeric limits
  • 标准 C 中的 sizeof 与 sizeof()? [复制]

    这个问题在这里已经有答案了 我看到一些直接使用 sizeof 的代码 想知道它是否是标准 C 令我惊讶的是 它运行得很好 这是一个例子 include
  • 使用 AutoMapper 进行 LINQ GroupBy 聚合

    试图让查询工作 但老实说不确定如何 或者是否可能 进行它 因为我尝试过的一切都不起作用 共查询6个表 Person PersonVote PersonCategory Category City FirstAdminDivision Per
  • 编写专门用于类及其子类的函数模板

    我正在尝试编写一个函数模板 一个版本应该用于不满足另一版本标准的所有类型 当参数是给定类的基类或该类本身时 应使用另一个版本 我尝试过超载Base 但是当类派生自Base 他们使用通用的 而不是特定的 我也尝试过这种 SFINAE 方法 s
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 便携式终端

    有没有办法根据所使用的操作系统自动使用正确的 EOL 字符 我在想类似的事情std eol 我知道使用预处理器指令非常容易 但很好奇它是否已经可用 我感兴趣的是 我的应用程序中通常有一些消息 稍后我会将这些消息组合成一个字符串 并且我希望将
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 如何使用 g++ 在 c++ 20 中使用模块?

    我读了这个链接https gcc gnu org wiki cxx modules https gcc gnu org wiki cxx modules并尝试从该网站复制以下示例 我已经知道这个编译器部分支持模块系统 注 我用的是windo

随机推荐

  • 有没有办法在 R 中为 Word 制作漂亮的表格?

    我问我的问题 这是我最后的希望 我必须用 Word 制作一份报告 我从事 R Markdown 工作 必须生成许多表格 我希望我的桌子很漂亮 但我尝试过的一切 pander KableExtra flextable 不工作 我的结果来自co
  • 尝试使用 Angular 中的 Google People API 获取生日和性别

    我已经花了几个小时尝试这样做 但我永远无法获得我想要获得的数据 我需要以其他方式提出请求吗 这是我的代码 doGoogleLogin return new Promise
  • 是否有 jquery 下拉年份选择器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个 jQuery 插件可以自动创建下拉年份选择器 这是一个 选择 元素 填充了从当前开始并追溯
  • 如何使用 jquery/javascript 在 safari 中复制到剪贴板?

    我研究了一堆答案和文章 它们展示了如何通过 jquery 在按钮单击时复制文本 但没有一个对我有用 我通过 ajax 将一个值附加到 DOM 中 我希望通过单击按钮来复制该值 所有这些解决方案都可以在 chrome 上运行 如果使用 jsf
  • 放弃更改而不从历史记录中删除

    有一个提交不起作用 所以我想放弃它而不将其从历史记录中删除 我已经从早期的修订版中更新并提交 从而创建了一个新的头 我没有分支 我不想要分支 我只想简单地继续使用新的头 就像它原来的样子 没有什么花哨的 没有合并 没有担心 只是继续忘记前一
  • Alexa Skills Kit 输入的“包罗万象”不符合既定意图

    我正在构建一个 Alexa 应用程序 它需要能够处理问题的答案 我有一个SkipIntent具有跳过问题的示例话语的意图 我想建立一个AnswerIntent它可以获取任何答案 并根据正确答案对其进行处理 我尝试使用Amazon LITER
  • 如何在 Java 中检测 SQL 表是否存在?

    如何在 Java 中检测给定 SQL 数据库中是否存在某个表 您可以使用DatabaseMetaData getTables http java sun com j2se 1 5 0 docs api java sql DatabaseMe
  • 何时不在 CakePhp 2.x 中使用可包含行为

    在将 Containable Behaviour 添加到我的各种模型类中几次后 我决定简单地将该行放入 AppModel 中 从而使每个模型都可包含 这让我想知道 是否有任何情况下 特定模型具有可控制行为是不理想的或适得其反的 我想说太少了
  • 更改JLabel的字体

    如何更改JLabel的字体 我尝试这样做但没有成功 JLabel nadpis new JLabel nadpis setFont new Font Papyrus Font ITALIC 100 nadpis setText hi 只是大
  • 将 BasedOn 属性与在不同字典中定义的 Style 结合使用

    我正在开发的应用程序有 2 个 ResourceDictionary DefaultStyles xaml 和 CustomStyles xaml CustomStyles 字典中的样式是否可能使用其他字典中定义的基本样式 默认样式 xam
  • 在一个查询中计算 MySQL 中的多行数

    我目前有一个表 其中存储了多个项目的大量统计信息 例如查看 下载 购买等 要获取每个项目的单个操作计数 我可以使用以下查询 SELECT COUNT FROM stats WHERE operation view GROUP BY item
  • pandas groupby 列并检查组是否满足多个条件

    我有一个如下所示的 DataFrame X Y Date are equal 0 50 0 10 0 2018 08 19 False 1 NaN 10 0 2018 08 19 False 2 NaN 50 0 2018 08 19 Tr
  • Spring Security - 记住我身份验证错误

    我们正在使用 Spring MVC 并遇到以下与 Remember Me 身份验证相关的问题 用户在选中 记住我 的情况下登录 工作正常 perpetitive login 表按预期更新 我们重新启动应用程序服务器 也许是在部署之后等 用户
  • 如何使用 Greasemonkey 更改此 javascript?

    这是脚本
  • 从网络摄像头获取帧的最快方法

    我在用 C Visual studio 开发一个程序时遇到了一点问题 现在我正在努力连接多个网络摄像头 通过 USB 电缆连接 为每个摄像头创建单独的线程来捕获帧 并创建单独的帧用于处理图像 我使用 OpenCV 来处理帧 但问题是我没有获
  • 关闭套接字是否会关闭流?

    我正在遗留的java应用程序中工作 在许多文件中 使用套接字和流 其中套接字被关闭但不是流 是否有必要在关闭套接字之前关闭所有流 因为我收到 打开文件太多错误 这个错误是因为没有关闭流 关闭套接字也会自动关闭流吗 来自Socket Java
  • UICollectionView 装饰视图

    有人为 iOS 6 UICollectionView 实现了装饰视图吗 不可能 查找有关在网络上实现装饰视图的任何教程 基本上在我的应用程序中 我有多个部分 我只想在每个部分后面显示一个装饰视图 这应该很容易实现 但我没有运气 这让我发疯
  • CreateWindowEx 失败并显示 ERROR_CANNOT_FIND_WND_CLASS

    我试图创建一个具有特定类类型 VSDebugger CDataTipWnd 的窗口 但是 当我运行 CreateWindowEx 时它失败 并且 GetLastError 告诉我找不到该类 这是供参考的代码 尽管这并不重要 const Wi
  • 如何在 ffmpeg 中的视频上叠加/放置图像[重复]

    这个问题在这里已经有答案了 大家好 我正在尝试在 ffmpeg 中的视频中心叠加图像 如下所示 ffmpeg i video mp4 i image png filter complex 0 v 1 v overlay 25 25 enab
  • 尽管导入了 stdio,但 getline 未在此范围内声明

    我需要使用getline 在C中 但是当我写 define GNU SOURCE include