Visualizzazione dei risultati da 1 a 10 su 24

Discussione: [C] logica di fgets()

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Quando da tastiera inserisci Ctrl-D (su Linux)/Ctrl-Z (su Windows) seguito da un Enter si tratta semplicemente di una convenzione con il programma che ti mostra la console - la sequenza di tasti Ctrl-D+Enter viene tradotta in una chiusura dello stream, per cui "dall'altro lato" il programma vede che lo stream è terminato.
    Oh.. Ora mi è chiaro: sequenza di tasti, quindi tutti e tre in in unica soluzione.. Il fatto è che non avevo mai sentito di questa cosa. In pratica aggiungendo ctrl-D/Z si aggiunge l'informazione di fine stream. Non vedo tuttavia l'utilità ai fini pratici in un input da tastiera (ma questo sicuramente dipende da mia inesperienza).
    Infine, lo standard input può benissimo essere un file vero e proprio - è quello che succede quando si redirige l'input (ad esempio da console fai tuoprogramma < input_file.txt); in questo caso puoi tranquillamente incontrare un EOF "vero", indipendentemente dai newline.
    Infatti, solo che nella guida non lo prendeva in considerazione , visto che i file li trattava più avanti.

    Ti ringrazio per queste risposte molto articolate.
    Per fare un tavolo ci vuole un fiore.

  2. #2
    Quote Originariamente inviata da filips Visualizza il messaggio
    Oh.. Ora mi è chiaro: sequenza di tasti, quindi tutti e tre in in unica soluzione.. Il fatto è che non avevo mai sentito di questa cosa. In pratica aggiungendo ctrl-D/Z si aggiunge l'informazione di fine stream. Non vedo tuttavia l'utilità ai fini pratici in un input da tastiera (ma questo sicuramente dipende da mia inesperienza).
    È comodo perché consente di usare gli stessi programmi sia per input da file che per input da tastiera; ad esempio, la maggior parte delle utility Unix (cat, sed, head, tail, less, sort, grep, ...) di base si limitano a leggere dati da standard input (che di default è agganciato alla tastiera), processandolo fino a quando incontrano un EOF. In questa maniera li puoi usare sia per leggere dati da file (usando la redirezione dello standard input), sia in pipeline complesse, sia per leggere dati da tastiera.
    Ti ringrazio per queste risposte molto articolate.
    Ultima modifica di MItaly; 02-11-2016 a 00:27
    Amaro C++, il gusto pieno dell'undefined behavior.

Tag per questa discussione

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.