使用curses.h从键盘获取字符

2023-12-31

我正在尝试使用curses.h 从键盘获取一个字符。 这是我的来源(get_char_example.c):

#include <curses.h>
#include <stdio.h>

int main(void)
{
    char ch;

    printf("Enter a character: ");
    ch = getch();
    printf("\nIts ASCII code is %d\n", ch);

    return 0;
}

我使用以下命令进行编译:

gcc get_char_example.c -o get_char_example

我收到以下错误:

/tmp/ccjaXwRU.o:在函数“main”中:

get_char_example.c:(.text+0x1c): undefined reference to `stdscr'
get_char_example.c:(.text+0x24): undefined reference to `wgetch'
collect2: error: ld returned 1 exit status

使用:海湾合作委员会(GCC)7.2.0 Arch Linux 4.13.9-1-ARCH

提前致谢!


这是一个链接器错误(请参阅this https://stackoverflow.com/questions/1513417/why-is-curses-on-linux-giving-me-following-error,几乎是重复的)。ncurses众所周知pkg 配置 https://www.freedesktop.org/wiki/Software/pkg-config/(这会在需要时提供更多依赖项),因此尝试使用以下命令进行编译:

 gcc -Wall -Wextra -g \
    $(pkg-config --cflags ncurses) \
    get_char_example.c \
    $(pkg-config --libs ncurses)

You want to Invoke GCC https://gcc.gnu.org/onlinedocs/gcc/Invoking-GCC.html with all warnings and debug info; you would use GDB https://sourceware.org/gdb/current/onlinedocs/gdb/, perhaps under emacs or with ddd, for debugging.

Even better, use some build automation https://en.wikipedia.org/wiki/Build_automation tool (like make https://www.gnu.org/software/make or ninja). With GNU make https://www.gnu.org/software/make/manual/html_node/index.html take inspiration from this https://stackoverflow.com/a/20146082/841108 to write your Makefile https://en.wikipedia.org/wiki/Makefile (where tab-s are significant).

在我的 Debian Sid 上,pkg-config --cflags ncurses gives -D_GNU_SOURCE -D_DEFAULT_SOURCE and pkg-config --libs ncurses gives -lncurses -ltinfo,所以只需链接-lncurses is not足够了(这就是为什么this https://stackoverflow.com/questions/1513417/why-is-curses-on-linux-giving-me-following-error与 2017 年 11 月的今天并不完全重复;几年前简单地链接-lncurses已经足够了,今天还不够)。

Use pkg-config --list-all查找所有已知的包和库pkg 配置 https://www.freedesktop.org/wiki/Software/pkg-config/;开发时your图书馆还考虑提供一些.pc为其归档。

顺便说一句,你的程序应该首先初始化initscr并使用printw; Read Ncurses 编程方法 http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/即使它有点旧了。

Notice also that using ASCII in the 21st century is obsolete. Programs and computers use UTF-8 everywhere http://utf8everywhere.org/, and this has profound consequences you should be aware of (since an UTF-8 https://en.wikipedia.org/wiki/UTF-8 character can span several bytes). My French keyboard has keys for ², §, and é (even with American keyboards your could paste them) and none of these are in ASCII. Consider also using some UTF-8 library like libunistring https://www.gnu.org/software/libunistring/manual/libunistring.html.

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

使用curses.h从键盘获取字符 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • GCC 如何运行其他程序?

    也许标题并没有那么准确地表达问题 我知道当我跑步时gcc foo cGCC 调用其他为其完成所有工作的子程序 使 gcc 主程序只是一个接口 但这到底是如何完成的呢 是否使用system or exec或者其他一些功能 我之所以想知道这个是
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • Django 开发服务器重新加载时间太长

    自从我升级到 OSX Lion 以来 这一直是我的问题 每当我更改 Django 项目中的文件时 运行服务器重新加载 需要相当长的时间才能再次开始服务 即使在新创建的 Django 1 4 项目中也会发生这种情况 不过在 Snow Leop
  • 如何在 Python 2.7 中创建计时器?

    我目前正在使用 Pyglet 库编写一个打砖块克隆程序 我想制作一个计时器 为游戏的 奖励 即更长的桨 更快的桨移动 更大的球 计时长达 20 秒 我一直在尽我所能地在互联网上挖掘 但找不到答案 import threading bonus
  • 使用 Rails 中的表单批量更新对象

    我有一个人物模型和一个报价模型 每个人都可以有许多与其相关的引言 而这些引言又可以与作者 文本 网址等内容相关联 实际上 实际上只有一个人拥有引用对象 但所有人都可能拥有一个 我正在尝试在报价上使用一个非常简单的批量适度工具 例如 用户可以
  • 使用 Python 解析 SVG 文件路径

    我正在开发一个机器人项目 从 Android 运行设备拍摄一张照片 然后发送到 cloudconvert org 将其转换为 SVG 然后所有 SVG 路径将被转换为 x y 坐标并串行发送到机器人手臂 机器人手臂将绘制它们笔打开或关闭 所
  • Fancybox 3:单击图像时禁用缩放

    我使用 Fancybox 3 插件设置了一个简单的图像滑块 http fancyapps com fancybox 3 docs http fancyapps com fancybox 3 docs 在 Kirby CMS 中 https
  • R 中 0-1 之间的所有值组合总和为 1

    简单的问题 我试图获得 3 个数字 0 1 到 0 9 之间 的权重之和为 1 的所有组合 例子 c 0 20 0 20 0 60 c 0 35 0 15 0 50 权重相差 0 05 我已经尝试过这个 library gregmisc p
  • 在片段中使用上下文的最佳方式

    我在我的应用程序中使用片段 我创建了一个名为 BaseFragment 的父类 所有其他片段都扩展了此 Basefrgment 下面是此 Basefragment 的片段 基础片段 java public class BaseFragmen
  • 更新 Python Pickle 对象

    我正在做一个机器学习项目 为此我正在使用picklePython 的模块 基本上 我正在解析一个巨大的数据集 这在一次执行中是不可能的 这就是为什么我需要保存分类器对象并在下一次执行中更新它 所以我的问题是 当我使用新数据集再次运行程序时
  • 将观察结果与重叠日期相结合

    我的数据框中的每个观察结果都包含不同的 日期之前 和 日期之后实例 问题是每个 ID 的某些日期重叠 例如 在下表中 ID 1 和 4 包含重叠的日期值 ID before date after date 1 10 1 1996 12 1
  • SimpleCursorAdapter 在 API 版本 15 中已弃用?

    简单光标适配器使用以下注释弃用其构造函数之一 已弃用 不鼓励使用此选项 因为它会导致在应用程序的 UI 线程上执行游标查询 从而导致响应能力差甚至应用程序无响应错误 作为替代方案 将 android app LoaderManager 与
  • AttributeError:“str”对象没有属性“policy”

    我是Python新手 我正在尝试制作一个可以发送电子邮件的电子邮件脚本 首先 我制作了一个没有任何类的 Python 脚本 只是运行以确保脚本按预期运行 当我得到预期的结果后 我正在尝试使用类重写脚本 以便学习 但我收到错误 我不明白 我不
  • 将导航属性映射到主表

    我有课Contract有两个属性TotalAmount and InstallmentAmount public class Contract public int ContractId get set public Amount Tota
  • fork调用后的地址空间

    当进程执行 fork 系统调用时 会生成一个子进程 fork 调用之后的所有代码都被复制到新的内存物理页 即帧 我无法可视化子进程的虚拟内存部分 因为在下面的代码中 char 变量的地址在子进程和父进程中是相同的 include
  • 为什么要使用 Android 服务?

    我想知道当您需要做很多事情只是为了访问任何公共方法或从服务 例如较大的 List 对象 获取大量数据时 使用 Android 服务进行后台工作有什么意义 如果您愿意 为什么不直接使用一个简单的 POJO 它可以在单独的线程中在后台为您执行操
  • 无法解析 rxjava 2 中的 Observable.from 方法

    rxjava 1 中的 Observable 类中有一个 from 方法 但在 rxjava 2 中找不到 如何在以下代码中替换 rxjava 2 中的 from 方法 List
  • 傀儡节点主机名

    我正在使用木偶来配置服务器 我想在 erb 模板中打印当前机器 节点 名称 有hostname变量 但这包含 puppetmaster 主机名 关于这个主题有什么好的参考 列表吗 好像我错过了什么地方 我只需在 erb 模板中调用以下代码即
  • 在 Django 的 ORM 中访问存储过程的最佳方式是什么

    我正在设计一个相当复杂的数据库 并且知道我的一些查询将远远超出 Django ORM 的范围 有人成功地将 SP 与 Django 的 ORM 集成吗 如果是这样 什么 RDBMS 以及您是如何做到的 我们 musicpictures co
  • iPhone 版 Mapsforge 模拟

    我的 iPhone 应用程序需要一些框架 该应用程序使用地图 现在这些地图是光栅图像 我想通过制作矢量地图来优化我的应用程序 我知道我的 Android 开发同事已经使用 Mapsforge 框架来实现此目的 iPhone 上有类似的库吗
  • 为什么我们在查找素数时可以使用 sqrt(n) 而不是 n/2 作为上限? [复制]

    这个问题在这里已经有答案了 我们如何使用sqrt n 代替n 2在这段代码中 使用是否正确sqrt n static boolean isPrime long n if n lt 1 return false double limit Ma
  • 使用curses.h从键盘获取字符

    我正在尝试使用curses h 从键盘获取一个字符 这是我的来源 get char example c include