как мне отсканировать букву со значением 0x00
Конечно, с вводом Нулевой символ 1 Ввести ."%s"
обрабатывает нулевой символ , как и любой другой символ, не являющийся пробелом.
char s[2];
scanf("%1s", s);
будет приятно s[0] == '\0'
(из-за ввода нулевой символ ) и s[1] == '\0'
из-за добавленного нулевого символа .
Последующий код, вероятно, будет иметь проблемы при работе с s[]
как строка .Возможно, вы захотите новый подход с "%c"
или getchar()
.Предложите массив символов с длиной вместо строки .
Если для требуется для использования scanf()
,затем следите за длиной с помощью "%n"
.
char buf[100];
int n1,n2
if (scanf(" %n%99s%n2", &n1, buf, &n2) == 1) {
int length_read = n2 - n1;
for (int i=0; i<length_read; i++) {
if (isprint((unsigned char) buf[i])) {
printf("%c", buf[i]);
} else {
// do something special for non-printable characters.
printf("(%X)", (unsigned char) buf[i]);
}
}
}
1 Нулевой символ может быть трудно ввести напрямую, кроме трубопровода, так как OPс помощью.Некоторые клавиатуры позволяют Crtl Shift @.