Newsgroup: it.comp.programmare
Titolo: inserimento pwd senza echo

Sto facendo un piccolo e molto semplice programma di cryptografia in C.
Per poter decryptare un testo l'utente deve inserire una pwd numerica che il
programma assegna ad un int.
Come posso fare a non far visualizzare il codice al momento dell'immissione?
C'è una funzione per disabilitare l'echo temporaneamente o una che
visualizzi un carattere da me scelto al posto della cifra digitata
dall'utente?
Grazie
Somas


ha scritto:

Non in modo standard, dipende dal compilatore/sistema operativo che
usi.
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

 usi.
Ma no! io credo che le funzioni di IO standard del C bastino!
--
| /
| \Byte - Andrea Briganti
E-Mail 
kbyt...@freemail.it
ICQ 40872731

 dall'utente?
Oddio, non ricordo bene le funzioni del C per la lettura e scrittura su
console (abituato al c++).
Però se non sbaglio devi fare questo:
Acquisire i caratteri della password ad uno ad uno utilizzando la funzione
di get per i char (non ricordo getc???) senza echo (leggi la guida) e fare
un putc('charchevuoi') (stesse considerazioni di prima) che ti servirà per
sostituire un carattere alla lettera immessa (di solito si usa un *).
Spero di esserti utile anche se non sono preciso sul nome delle funzioni.


 console (abituato al c++).
getch()
getche() ha l'eco.

dall'utente?
getche(), mi pare.
Leonardo
".signature": bad command or file name

Ringrazio per le risposte, le funzioni che mi avete consigliato le ho già
provate anche se per un'altra parte del programma...
Il mio problema è un po' più specifico infatti devo acquisire un codice
numerico, cioè un int, ora lo faccio con uno scanf perchè è l'unica funzione
che conosco per acquisire dei valori....
Forse non avevo spiegato bene il problema :-(
Somas

 Ma no! io credo che le funzioni di IO standard del C bastino!
No, non bastano.
getch
=====
A single character from the console (stdin) is returned.  The input is
not line-buffered.  If there is a character pending from
ungetch, it is returned instead.  The character is not echoed to the
screen.
Return Value
------------
The character.
Portability
-----------
not ANSI, not POSIX


 ha scritto nel messaggio
news:8b90hl$4q4$1...@nslave2.tin.it...

quando il codice lo immetti da tastiera poco cambia, acquisisci i caratteri
del numero e li metti in un array di caratteri, poi converti il tutto in
intero. Ora posto righe di codice di getto, senza essere attento alla
correttezza, il senso comunque è quello:
/* Leggi la cifra, ammettiamo per semplicità senza parsing, la fine è il
carattere '\n' */
const MAX_CIFRE = 8; /* O quello che vuoi tu */
char car;
car = getch(); /* o getch(car), non mi ricordo le funzioni del c */
int ncifre = 0;
int cifre[MAX_CIFRE];
while(car!='\n' &&  ncifre < MAX_CIFRE) {
  putch('*');
  cifre[ncifre] = car;
  ncifre++; /* o in C si usa solo ncifre = ncifre + 1; ? */
  car = getch();
}
Ora hai un array con le cifre dalla più significativa a quella meno
significativa. Per ottenere il numero è possibile farlo semplicemente:
int numero = 0;
while(ncifre >= 0) {
  ncifre--;
  numero *= 10; /* numero = numero * 10; */
  numero += cifre[ncifre]; /* numero = numero + cifre[ncifre]; */
}
Dopo il ciclo numero sarà il numero che avrai letto.


 screen.
E quindi???? quale sarebbe il problema???
Che devi leggere un numero???
Fai una lettura carattere per carattere delle cifre e le converti in int con
un algoritmo da prima settimana di corso di Fondamenti di informatica.


 un algoritmo da prima settimana di corso di Fondamenti di informatica.
Siiiiii :-) no ci credo :-) in una settimana ti vedi solo l'imput/output :-)
cmq č una bella idea, grazie...
Somas

 un algoritmo da prima settimana di corso di Fondamenti di informatica.
Uh-uh, fossi in te correrei a brevettarlo...


cmq č una bella idea, grazie...
Ma "veramente stai a fare" [cit?] ???
Byez
un DeK e la sua infanzia farcita di Basic v2
--
DeK - Delirio & Kaos
FAN n.1 del CrossPost e dell' OT :)
Visita One Big Mob - 
http://dek.hey.to

 Uh-uh, fossi in te correrei a brevettarlo...
Brevettare un algorimo che sicuramente č piů vecchio di me?


> Allora come mai è nella libreria stdio???
Anch'io ho sentito poco tempo fa che non è standard, mi hanno anche fatto
notare che la Borland fa un po' quello che vuole e mette quelo che vuole
dove gli pare....
Poi per Linux non so, non ho ancora nessuna esperienza...
Somas

> Allora come mai è nella libreria stdio???
Anch'io ho sentito poco tempo fa che non è standard, mi hanno anche fatto
notare che la Borland fa un po' quello che vuole e mette quelo che vuole
dove gli pare....
però cercando ho trovato che:
Syntax
#include <conio.h>
int getch(void);


 
Non ho detto che non si puo' fare, ho detto che non si puo' fare in
modo _standard_ , mi sembra diverso. Fuori standard si puo' fare
praticamente qualsiasi cosa.
