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
    Non credo di aver capito appieno il discorso su ctrl-D/Z e la terminazione. Per es. da stdin non basta premere Enter per terminare e inserire la linea di input? Quella combinazione di tasti
    non dà forse un EOF? Cosa c'entra EOF? Praticamente stai dicendo che tutti i caratteri inseriti ci sono stati, a parte EOF (successivo a Enter?)?

    Se è giusto tutto questo allora credo di aver capito che con "non gestisce" tu intendessi il caso in cui ci sia stato tutto fatta eccezione per EOF, visto che strlen(nome)-1, nell'intenzione dell'esempio di beccare il newline, deve appunto per forza corrispondere al newline, segno quindi che dopo non c'è nessun EOF, ma solo il null. Se è corretto ripeto tuttavia il mio dubbio: a che serve mettere ctrl-D/Z per affermare che così un input da tastiera sia terminato? Questo credo avrebbe significato solo nel caso in cui lo stream dovesse venir accolto in un file, mentre l'esempio non sembra riferirsi a questa circostanza, ma a una semplice stringa nome.
    Ultima modifica di filips; 17-10-2016 a 07:35
    Per fare un tavolo ci vuole un fiore.

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    11
    Quote Originariamente inviata da filips Visualizza il messaggio
    Non credo di aver capito appieno il discorso su ctrl-D/Z e la terminazione. Per es. da stdin non basta premere Enter per terminare e inserire la linea di input? Quella combinazione di tasti
    non dà forse un EOF? Cosa c'entra EOF? Praticamente stai dicendo che tutti i caratteri inseriti ci sono stati, a parte EOF (successivo a Enter?)?
    No, ENTER genera un '\n'.
    Tra l'altro EOF non è un carattere ma una condizione, ossia, quando si legge oltre la fine del file.
    Ti sembrerà strano ma ha senso parlare di EOF anche quindo l'input è da tastiera.

    Semplicemente fgets smette di leggere solo in due casi: quando incontra '\n' o si ha la condizione di EOF.
    In tutti i due casi il buffer conterrà sempre il carattere NULL e se c'è spazio e la condizione non è di EOF ci sara anche il '\n'. Tutto questo è scritto nelle specifiche di fgets.

  3. #3
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155
    Scusa un ultimo dubbio..
    Allora ho interpretato bene (in effetti era esattamente quello che c'era scritto nel tuo penultimo msg), il "non è terminato" si riferiva a EOF. Ma come si fa?: prima premo Enter e poi cttl+D.. Ma se premo Enter si termina e si spedisce l'input a destinazione.. Non credo che abbia qualche effetto ulteriore EOF. Inoltre se non è un carattere, la lunghezza della stringa non dovrebbe variare: 'abc\nEOF' dovrebbe misurare 4. Infine, che utilità dà EOF in un input da tastier se prima c'è già Newline che sembra assolvere lo stesso compito? Non è una specie di doppione?
    Per fare un tavolo ci vuole un fiore.

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.