#c #shell #colors
#c #оболочка #Цвет
Вопрос:
Я разрабатываю нанооболочку для школьной работы, и у меня проблема с цветовыми кодами ANSI.
Итак, когда я запускаю программу, и я что-то пишу, и нажимаю TAB, тогда, если я отступлю на вкладку, я также смогу удалить свой предыдущий printf, скриншот ниже.
Мне интересно, существует ли на C другой способ сделать мой printf цветным, или я могу запретить пользователю нажимать TAB.
После printf я использую fgets для чтения введенных пользователем аргументов.
fgets(readpos, bufSize, stdin);
Мой printf: printf("33[1;31mnanoShell$ 33[0m");
Пример:
Комментарии:
1. Возможно, вы захотите прочитать о библиотеке ncurses .
2. @pmg Я искал это, потому что я пробовал canio.h, но потом я обнаружил, что эта библиотека больше не реализована для пользователей в целом, поэтому они рекомендуют ее, но я не нашел, как изменить цвета printfs.
3. Возможно, GNU Readline может сделать то, что вы хотите… Я никогда не использовал его.
4. @pmg Для блокировки, клавиша табуляции, может быть, getchar или что-то в этом роде! Но я думаю, что проще изменить цвет printf без цветов ansi
5. Проблема со стандартными библиотечными функциями заключается в том, что они (обычно) буферизуются по строкам, т. Е. Вы не получаете
<TAB>
или<BACKSPACE>
или что-то еще, пока пользователь не введет<ENTER>
, а между тем положение курсора не находится под вашим контролем. Существуют решения для этой буферизации и управления (которые используют эти библиотеки) с настройкой атрибутов устройства или чего-то еще.