Есть ли способ получить имя значения ascii.
например
0x08 или просто 8 - это обратное пространство
могу ли я получить имя "Backspace" в c или c++?
Короче говоря, нет. Однако легко работал.
Если ваш код ASCII <32, вот таблица стандартных аббревиатур символов ASCII, которые вы можете использовать:
char *ascii_cc[] = {
"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
"BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI",
"DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
"CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US" };
Затем просто проиндексируйте этот массив строк по значению интересующего вас char
. Например,
char c = 8; /* backspace */
printf("ASCII control code = %s\n", ascii_cc[c]);
В стандарте нет способа сделать это, и я не знаю о сторонней библиотеке, способной это сделать. Ваш лучший вариант - создать таблицу с сопоставлениями самостоятельно. Вам нужно будет создать только несколько специальных сопоставлений, поскольку большинство символов называются так, как они отображаются.
man ASCII
может помочь:
#include <stdio.h>
#include <string.h>
FILE *popen(const char *command, const char *mode);
int pclose(FILE *stream);
int main(void)
{
FILE *cmd = popen("man ASCII", "r");
char *key = "010";
char result[128];
while (fgets(result, sizeof(result), cmd) != NULL)
if (strstr(result, key))
printf("key %s: %s", key, result);
pclose(cmd);
return 0;
}
Их всего 128 (последние 128 отличаются, в зависимости от того, какую кодовую страницу вы используете), почему бы вам не создать массив const? Если вы сократите свои данные до непечатаемых символов, количество элементов упадет до 32.
Вы можете найти полный список в Википедии.
Вот первые 32 значения:
Dec Abbr Name 0 NUL Null character 1 SOH Start of Header 2 STX Start of Text 3 ETX End of Text 4 EOT End of Transmission 5 ENQ Enquiry 6 ACK Acknowledgment 7 BEL Bell 8 BS Backspace[d][e] 9 HT Horizontal Tab[f] 10 LF Line feed 11 VT Vertical Tab 12 FF Form feed 13 CR Carriage return[g] 14 SO Shift Out 15 SI Shift In 16 DLE Data Link Escape 17 DC1 Device Control 1 (oft. XON) 18 DC2 Device Control 2 19 DC3 Device Control 3 (oft. XOFF) 20 DC4 Device Control 4 21 NAK Negative Acknowledgement 22 SYN Synchronous idle 23 ETB End of Transmission Block 24 CAN Cancel 25 EM End of Medium 26 SUB Substitute 27 ESC Escape[i] 28 FS File Separator 29 GS Group Separator 30 RS Record Separator 31 US Unit Separator
man ascii
, нажмите вводman
, вы могли бы Google "ASCII" и найти что-то вроде этого