Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168

    [C] strcpy, strcat, sprintf

    Ciao a tutti!
    Conosco gli utilizzi di queste tre funzioni, ma quello che vorrei sapere è la loro differenza in termini di efficienza.

    Se posso ottenere lo stesso risultato utilizzando qualunque di queste, quale conviene usare?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,
    di differenze ce ne sono: una copia, una concatena e un'altra compone. Forse ci sono sovrapposizioni nei loro usi, e lì scegli in base alla tua preferenza. Il mio consiglio è quello di scegliere nel modo più "naturale" possibile, cioè utilizzare ogni funzione per lo scopo per il quale è stata progettata, evitando di "forzarla" a fare qualcos'altro. Ottieni così del codice che è generalmente più facile da leggere e da mantenere.


  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Non fanno propriamente la stessa cosa:
    strcpy copia una stringa su un array di char.
    strcat concatena a una stringa un'altra stringa.
    sprintf serve alla formattazione.

    Con strcpy puoi concatenare due stringhe volendo, ma non è fatta per questo, inoltre per usarla in tal modo devi prima calcolarti il puntatore sul quale copiare.
    Con strcat puoi se vuoi copiare una stringa, ma dovrai prima copiare nell'array di destinazione la stringa vuota "" o assegnare alla prima cella '\0' che è equivalente.
    Con sprinta puoi sia concatenare che copiare, ma non è fatta per questo. Serve per la formattazione ed è l'unica che ti permette ad esempio di formattare un int: sprintf(dest, "Result: %05u", uint_value);

    sprintf, se usata per copiare o concatenare, sarà sempre la più inefficiente in quanto prima deve interpretare la stringa di formattazione.
    Utilizzare strcpy o strcat nei panni l'una dell'altra introduce solo complicazioni.
    Sono 3 funzioni diverse fatte per scopi diversi.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Grazie mille per i consigli

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Ho un dubbio!Per costruire la mia stringa o due possibilità: 1) fare una strcpy seguita da una strcat 2) fare una sprintf Quale delle due possibilità è consigliata?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Non so come mai ma nella scrittura del messaggio non va a capo

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    In che senso scusa?
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    No scusami mi sono espressa male...il fatto di andare a capo non era sulla costruzione della stringa ma proprio sul messaggio! Avevo scritto i punti 1 e 2 a capo ma una volta inviata la risposta sono venuti uno in fila all'altro

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    La domanda è: per costruire una stringa è consigliato usare una sprintf oppure (una strcpy + una strcat)? So che hanno funzionalità differenti, ma nel mio caso per costruire la stringa di cui ho bisogno posso farlo in questi due modi...quale dovrei preferire?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da Dany_ Visualizza il messaggio
    La domanda è: per costruire una stringa è consigliato usare una sprintf oppure (una strcpy + una strcat)? So che hanno funzionalità differenti, ma nel mio caso per costruire la stringa di cui ho bisogno posso farlo in questi due modi...quale dovrei preferire?
    Probabilmente la sprintf ti dà meno possibilità di sbagliare.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.