2013-09-22 2 views
0

В консоли Linux, когда программа C запрашивает строку (например, имя пользователя), как я могу вставить символы, не подлежащие печати?
Я ищу что-то лучше, то
printf '\x48\x83\xc4\x50\x48\xbf\x3d...etc' | ./myProgram.bin
или
./myProgram.bin < dataFile
Я предпочитаю, когда нужно вводить символы, но я не знаю, как писать непечатаемые них.
СпасибоСтрока ввода с непечатаемыми символами

ответ

0

Номера печатаемые символы имеют десятичное значение от 0 до 31. Вы можете распечатать их таким образом:

void main() { 
int i; 
char c; 
for(i=0;i<32;i++)  { 
    c=i; 
    cout<<c<<" "; 
} 
getch(); 
} 

Таким же образом, вы можете прочитать символы с точки зрения их целочисленных значений ... . Однако, помещая их вместе с печатными символами в одну строку, это будет еще одна задача в гору.

+2

Я не хочу печатать символы из C-программы, но даю их как вход в программу на C, которая может быть (например): void main (int argc, char * argv []) {char buf [20]; printf («Имя пользователя:»); получает (ЬиЕ); } – user2431763

+0

Вы можете перенаправить вывод в программу. –

0

Он работал с использованием xclip (printf '\ x48 \ x83 ...' | xclip), чтобы скопировать строку в буфер обмена.
Затем, когда программа запрашивает строку, я использовал SHIFT + CTRL + V для вставки строки.
Обычно работает, за исключением определенных символов (\ x08, ...), что входная функция (gets, ...) может игнорировать или использовать в качестве управляющего символа.

Смежные вопросы