如何在vlang中创建getch?

问题描述 投票:0回答:1

我制作了一个brainfuck解释器,并且“,”需要在不输入的情况下获取一个字符,但我发现它们不是像getch这样的函数,即input_character

我尝试过在Vlang中嵌入C代码并使用C2V,但失败了。

我期望用户按任意键不需要按回车键,该函数返回键盘扫描码

input vlang
1个回答
0
投票

确实,Vlang 的默认模块中有像“builtin”这样的功能,例如:

fn input_character() int

不过此功能需要按回车键才能操作。

您描述的函数“getch()”默认情况下不属于标准 C 库的一部分。 您需要使用“conio”或其在 Linux 上的等效项,例如“ncurses”来实现您正在寻找的内容。

提供 Linux 上 Vlang 的代码示例,如下所示:

#flag linux -I/usr/include/ncurses
#flag linux -lncurses
#include "ncurses.h"

fn C.initscr() ?
fn C.cbreak()
fn C.noecho()
fn C.getch() int
fn C.endwin() int

fn main() {
    C.initscr()
    C.cbreak()
    C.noecho()

    char_ := C.getch()

    C.endwin()

    println('Character read: ${char_.str()}')
}

为了解释一下代码,我们导入 ncurses 库,然后声明 ncurses 库中的函数,以便它们可以在 Vlang 中使用。之后,我们在主函数中使用它们。

您可以阅读官方文档了解如何将C代码与V代码集成

我还建议阅读不同库(例如 conio 或 ncurses)的文档,以达到所需的结果。

© www.soinside.com 2019 - 2024. All rights reserved.