2013-09-13 2 views
-4

Я пишу код C для «подсказки пароля». Мне нужно отображать * для каждого символа, который вводит пользователь. Но я не поддерживаю getch(). Таким образом, я попробовал системные вызовы. Пример:Как мы можем отображать * для каждого символа, который мы вводим (запрос пароля), используя системные вызовы в Linux?

for(i=0;i<5;i++) 
{ 
    system("stty -echo"); 
    scanf("%c", &a[i]); 
    system("stty echo"); 
    printf("*"); 
} 

Но он не печатает * сразу, когда мы вводим символ.

Любой другой способ достичь этого ???

+0

Консоль приложений? GUI-приложение? что ты уже испробовал? Что сработало, а что не получилось? –

+1

В каком контексте? Вы хотите, чтобы вход был переписан или вы хотите, чтобы конкретная программа отображала символ по-разному? Может быть, вы просто хотите переназначить раскладку клавиатуры? – bitmask

+0

Я отредактировал и показал вам контекст. – Karthik

ответ

3

Вы можете использовать неканонический режим без эха.

See an example here

В этом примере я изменил следующие строки

else 
    putchar (c); 

с

else 
{ 
    putchar (c+1); 
    fflush(stdout); 
} 
+0

Наверное, хорошая идея воспроизвести весь пример (и/или просто показать весь ваш код) в случае, если ссылка будет мертвой в будущем. –

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