سؤال

كان يتساءل كيف ستكون قادرا على اختبار المدخلات التي يتم حفظها في صفيف Char مثل ... giveacodicetagpre.

واستخدام giveacodicetagpre.

للحصول على المدخلات من المستخدم، لكنك يتساءل كيف يمكنني استخدام بيان إذا كان إدخال المستخدمين على سبيل المثال ctrl + d أو أي ctrl + anykey؟

حاولت استخدام قيمة ASCCI مثل هذا .. هو مثال لاختبار CTRL D giveacodicetagpre. نتيجة

هي مجموعة alswell 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