Входная строка с непечатаемыми символами
В консоли Linux, когда программа на C запрашивает строку (то есть имя пользователя), как я могу вставить непечатаемые символы?
Тогда я ищу что-то лучшееprintf '\x48\x83\xc4\x50\x48\xbf\x3d...etc' | ./myProgram.bin
или же./myProgram.bin < dataFile
Я предпочитаю вводить символы, когда это необходимо, но я не знаю, как писать непечатные.
Спасибо
2 ответа
Он работал с использованием xclip (printf '\x48\x83...' | xclip) для копирования строки в буфер обмена.
Затем, когда программа запрашивает строку, я использовал SHIFT+CTRL+V, чтобы вставить строку.
Обычно это работает, за исключением определенных символов (\x08, ...), которые функция ввода (get,...) может игнорировать или использовать в качестве управляющего символа.
Непечатные символы имеют десятичное значение от 0 до 31. Вы можете напечатать их следующим образом:
void main() {
int i;
char c;
for(i=0;i<32;i++) {
c=i;
cout<<c<<" ";
}
getch();
}
Точно так же вы можете читать символы с точки зрения их целочисленных значений.... Однако размещение их вместе с печатными символами в одной строке будет другой трудной задачей.