gpt4 book ai didi

c - 在 OSX 上无需输入即可获取 key

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:07 25 4
gpt4 key购买 nike

请确保您使用的是 OSX!

海湾合作委员会信息:

使用内置规范。目标:i686-apple-darwin11配置为:/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~28/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm- gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^. -]*$/s/$/-4.2/--with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~ 28/dst-llvmCore/Developer/usr/local--program-prefix=i686-apple-darwin11---host=x86_64-apple-darwin11--target=i686-apple-darwin11--with-gxx-include-dir =/usr/include/c++/4.2.1线程模型:posixgcc 版本 4.2.1(基于 Apple Inc. build 5658)(LLVM build 2336.11.00)

我正在尝试从按键获取一个字符并显示它。我正在尝试在没有 Curses 库的情况下执行此操作(将用于 Android 和 OSX 等,我不想移植)。根据另一篇文章,我得出以下结论......

#include <stdio.h>
#include <termios.h>
#include <time.h>
#include <string.h>

static char ch;
void getkey() {
struct termios orig_term_attr;
struct termios new_term_attr;

/* set the terminal to raw mode */
tcgetattr(fileno(stdin), &orig_term_attr);
memcpy(&new_term_attr, &orig_term_attr, sizeof(struct termios));
new_term_attr.c_lflag &= ~(ECHO|ICANON);
new_term_attr.c_cc[VTIME] = 0;
new_term_attr.c_cc[VMIN] = 0;
tcsetattr(fileno(stdin), TCSANOW, &new_term_attr);

/* read a character from the stdin stream without blocking */
/* returns EOF (-1) if no character is available */
char test = fgetc(stdin);
if(test != -1)
printf("Value is : %c \n",test);
ch = test;
/* restore the original terminal attributes */
tcsetattr(fileno(stdin), TCSANOW, &orig_term_attr);
}

int main()
{
do
{
getkey();
int ch2 = (int) ch;
if(ch2 != -1){
printf("%c \n",ch);
}
}while(1==1);
}

但这似乎并没有清除缓冲区,所以当我输入 a 然后 b 和 c 时,我看到...

aababc

目前正在使用命令 gcc tect.c 和 ./a.out 在 My OSX 机器上编译和运行

我希望它是abc

最佳答案

您的代码有效,但您将字符打印了两次:

printf("Value is : %c \n",test);
printf("%c \n",ch);

我自己试过:

Value is : a 
a
Value is : b
b
Value is : c
c
Value is : d
d

顺便说一句,您不应该使用全局变量,而应该返回 key ...

关于c - 在 OSX 上无需输入即可获取 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com