PDA

View Full Version : [C] Precisazione circa fscanf()


D4rkAng3l
12-07-2006, 19:32
Ciao, potete darmi qualche chiarimento sulla funzione fscanf() ?

Ma particamente se io ho:

fscanf(stdin, "%s%d", s, &t);

stdin indica lo standard input che nel file system del C può essere visto in maniera astratta come un file? ma potete darmi qualche informazione più precisa relativamente allo stream?

Cioè sei io faccio:

FILE *fp;
fopen("prova.dat", "w")

stò dichiarando un puntatore di tipo file cioè un puntatore ad una locazione di memoria che contiene determinate informazioni sul file in questione come: nome, stato, posizione corrente nel file e con fopen() apro uno stream e lo colelgo a tale file....

potete darmi maggiori informazioni circa il significato di aprire un stream e collegarlo a un file a livello teorico (a livello pratico è abbastanza banale mi pare..perchè posso vederlo semplicemente come apro un file e ci metto o ci leggo roba dentro senza troppe paranoie se il file è quello che uno considera normalmente un file o se è un dispositivo)

ma nel caso di fscanf(stdin, "%s%d", s, &t); dove viene apero lo stream? cioè non faccio fopen()...lo apre all'interno di fscanf?

mmm forse mi stò facendo troppe paranoie inutili...booo

Black imp
12-07-2006, 21:55
mmmh non so se ho capito quello che ti confonde ma il discorso è che lo stdin è collegata alla tastiera che è uno stream già aperto - spero di non sbagliare ma ste cose è un po' che non le uso -. tu puoi anche aprire effettivamente un file su disco e reindirizzare lo stdin su quello. a quel punto ogni scanf (stdin ... ) agisce sul file che hai dovuto effettivamente aprire. stessa cosa per lo stdout che è il video. così mi ricordo. :mc: