Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    [C] Terminatore stringa

    Allora per quanto le mie conoscenze su C siano basilari, so che tutte le funzioni della libreria strandard (printf, strcmp etc etc) utilizzano un terminatore di fine stringa, cioè '\0'. Le funzioni di basso livello come la read non fanno uso di questo terminatore. La domanda ora è: se devo confrontare due stringhe lette entrambe con la read (che non utilizza terminatore) tramite strcmp (che utilizza il terminatore) a che problemi vado incontro, come risolvo questo problema?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Sì, vabbè questo era chiaro, io chiedevo come. Ho un buffer di 100 caratteri che contiene una parola di 15 caratteri, come faccio a fargli mettere il terminatore al 16 carattere? Ovviamente io non so a priori quanto sia lunga la parola che leggero, quindi non so dove andrà messo il terminatore.

  4. #4
    read ti ritorna il numero di caratteri realmente letti, usa questa informazione per scrivere nella giusta posizione il carattere di terminazione
    ciao
    sergio

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Una volta letta la stringa puoi calcolarne la lunghezza con strlen. Se il valore restituito da strlen è i, ti basterà assegnare il terminatore al carattere i-esimo della stringa.

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    In linea generale basta una memset.
    codice:
        memset(buffer,0,100);
    per azzerare tutti i byte.

  7. #7
    Per precauzione alloca 101 bytes, azzerane 101, e leggine al massimo 100; così avrai la certezza che l'ultimo byte sarà sempre 0.

  8. #8
    Originariamente inviato da YuYevon
    Una volta letta la stringa puoi calcolarne la lunghezza con strlen. Se il valore restituito da strlen è i, ti basterà assegnare il terminatore al carattere i-esimo della stringa.
    La strlen utilizza il terminatore di stringa

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Originariamente inviato da menphisx
    Per precauzione alloca 101 bytes, azzerane 101, e leggine al massimo 100; così avrai la certezza che l'ultimo byte sarà sempre 0.
    con memset???

  10. #10

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 © 2024 vBulletin Solutions, Inc. All rights reserved.