相关疑难解决方法(0)

什么等同于Linux中的getch()和getche()?

我无法在Linux中找到conio.h的等效头文件.

在Linux中有getch()&getche()function功能吗?

我想制作一个开关盒基本菜单,用户只需按一个键即可提供选项,并且应该向前移动过程.按下他的选择后,我不想让用户按ENTER键.

c linux getch getchar getc

57
推荐指数
4
解决办法
11万
查看次数

读取设备状态报告ANSI转义序列回复

我正在尝试使用以下代码检索VT100终端中光标的坐标:

void getCursor(int* x, int* y) {
  printf("\033[6n");
   scanf("\033[%d;%dR", x, y);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下ANSI转义序列:

设备状态报告 - ESC [6n

将光标位置报告给应用程序(就像键入键盘一样)ESC [n; mR,其中n是行,m是列.

代码编译并发送ANSI序列,但是,在接收到它之后,终端将^[[x;yR字符串打印到stdout而不是stdin使我无法从程序中检索它:

终端窗口

显然,字符串是为程序指定的,所以我必须做错误的事情.有人知道它是什么吗?

c terminal ncurses xterm ansi-escape

8
推荐指数
2
解决办法
2507
查看次数

如何从终端读取“击键缓冲区”?

假设该命令正在运行,我在运行ping时在终端上输入一些内容。ping

现在,当ping终止并bash重新获得控制权时,bash将在终端上打印我在ping运行时键入的内容。这是一个屏幕截图,显示了我的意思:

在此输入图像描述

如何bash获得这些信息?我确信它没有从 中获取它stdin,因为当我输入 时"I typed this while ping was running",我没有按Enter(所以stdin是空的)。

因此,该数据必须存储在“击键缓冲区”中,并bash从该缓冲区中读取。

我的问题是,如何bash从该缓冲区读取(它调用什么函数......)?

c linux bash terminal

3
推荐指数
1
解决办法
2134
查看次数

如何使用c在终端中停止回声?

假设我正在使用 fgets 读取一个字符串,并且我想防止该字符串的字符在终端内部回显(没有 bash 技巧)。我怎样才能做到这一点?

c echo

1
推荐指数
1
解决办法
878
查看次数

printf 在 C 中使用是否不安全

我是 C 的新手,所以我开始玩一些代码。我的代码中有一个错误,因为我认为使用使用printf(pass)不安全,因为它可以覆盖该值,因此对用户不安全。我想知道printf(pass)我的代码不安全是否正确?另外,我怎样才能让用户在finally logged in不更改代码的情况下打印消息。有没有办法做到这一点?

我的代码:

#include <stdio.h>

char pass[100];

char getPass() {
  int value = 'G';
  int * j = & value;
  fgets(pass, sizeof(pass), stdin);
  printf("your entered pass is ");
  printf(pass);
  return (char)( * j);
}

void main() {
  printf("enter the pass here ");
  if (getPass() == 'K') {
    printf("finally logged in\n");
    exit(0);
  } else {
    printf("Wrong password\n");
    exit(1);
  }
}
Run Code Online (Sandbox Code Playgroud)

c printf c-strings fgets

0
推荐指数
1
解决办法
531
查看次数

标签 统计

c ×5

linux ×2

terminal ×2

ansi-escape ×1

bash ×1

c-strings ×1

echo ×1

fgets ×1

getc ×1

getch ×1

getchar ×1

ncurses ×1

printf ×1

xterm ×1