質問

チャーレイに保存されている入力をどのようにテストすることができるのか疑問に思っていました...

   char input[INPUT_SIZE];
.

を使って

fgets(input,INPUT_SIZE,stdin);
.

ユーザーからの入力を取得するが、ユーザーが入力された場合にIF文をテストする方法をどのように使用できるか疑問に思っていました。 CTRL + d または任意の ctrl + ykey?

私はこのようなASCCI値を使ってみました.. Ctrl D をテストする例です。

  if(result = 'EOT') {printf("EOT");}
.

結果はチャーアレイASWELLです。

役に立ちましたか?

解決

You can only test Ctrl+d as your read returning EOF, see the manual of your read to have more info on this, but generally it returns 0. Same goes for Ctrl+c, as both are sending signals to your program.

For other Ctrl+key combinations, it highly depends on your system.

On linux Ctrl+a and Ctrl+e in a shell or emacs will move you to the beginning or the end / beginning of the line respectively.

The easiest to get what you want is to write a small program using read, unbuffered (see ioctl), with a 8-bytes buffer, and dump your read bytes each time you exit the read.

int nbr;
int i;
char buf[8];

nbr = 42;
while (nbr > 0)
{
  nbr = read(0, buf, 8);
  i = 0;
  while (i < nbr)
    printf("%x ", buf[i++]);
  printf("\n");
}

You will have the hex version of the ctrl+key received sequences. Likely to begin with \ESC or \033 (the escape character sequence). For example the arrow-up key looks like \033[A

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top