Scanf нулевое значение (ASCII) - PullRequest
1 голос
/ 19 марта 2019

Я хочу спросить, как я могу отсканировать букву со значением 0x00 (я знаю, что это ноль).Я называю свою функцию echo -e '\ x00' |function /.myfunction, и мне нужно отсканировать ее в строку для последующей распечатки.

1 Ответ

0 голосов
/ 19 марта 2019

как мне отсканировать букву со значением 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 @.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...