Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] Dubbio su fscanf

  1. #1

    [C] Dubbio su fscanf

    salve a tutti, sto analizzando dei codice per esercitarmi per un corso di C che sto facendo, mi sono imbattuto in 2 righe di codice molto simili ma che non ho capito a pieno:

    1) fscanf (fptr, "%s%d", autovet.targa, &autovet.anno);


    2) fscanf (stdin, "%s%d", struttura.nome, &struttura.anni);


    La prima secondo quanto ho studiato vuol dire :

    Vai nel file puntato da fptr estrai dal file una stringa e memorizzala nel membro targa della struttura autovet, estrai dal file un intero e memorizzalo nel membro anno della struttura autovet

    La seconda non l'ho capita bene stdin non è un puntatore ad un file.. qualcuno saprebbe spiegarmi il significato di quella scrittura? grazie 1000

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    stdin e' puntatore predefinito al flusso di dati proveniente dalla tastiera (standard input) che e' assimilabile ad un file.

  3. #3
    praticamente scrivere fscanf con puntatore stdin è come usare una scanf semplice?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... sì, ma puoi utilizzare una variabile per il puntatore in modo da gestire allo stesso modo tastiera e file.

  5. #5
    STDIN è un file descriptor che rappresenta lo standard input(/dev/stdin). Per default lo standard input è un file device col quale si può comunicare con la tastiera. Ciò perchè in UNIX tutto è un file, e C è nato su UNIX, quindi rispetta questo concetto, almeno quello di base.
    Anche se su winzoz è tutto diverso, vale lo stesso.

    Gli altri file descriptor "STANDARD" sono stderr (cche stampa su /dev/stderr), stdout (/dev/stdin).
    Esistono anche stdprt o stdprint(ma credo che funzionino su winzoz) e altri specifici di POSIX, di cui non mi ricordo l'esistenza.

    P.S. : un file descriptor non è un puntatore a file, ma è un intero che lo rappresenta.


  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Tutto giusto ma in Windows stdin e' un puntatore a file ...

    Puoi scrivere tranquillamente

    FILE *s = stdin;

    Ovviamente il puntatore punta in memoria alla struttura __iob

  7. #7
    Originariamente inviato da oregon
    Tutto giusto ma in Windows stdin e' un puntatore a file ...

    Puoi scrivere tranquillamente

    FILE *s = stdin;

    Ovviamente il puntatore punta in memoria alla struttura __iob
    Si scusa e che io non sono specializzato in windows

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No problem ... ma non tutto e' un file ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.