Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    55

    [C] Concatenazione stringhe

    Salve,

    ho un problema ad attaccare due stringhe. Il codice e:

    codice:
    char c[80];
    
    char *sendbuf:"HELO ";
    
    gethostname(c, sizeof (c));
    Non riesco a farmi stampare: "HELO HOST_NAME"

    HOST_NAME sta ad indicare il nome dell'host.

    Ho provato con strcat, ma non va. Suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Perchè non va con strcat ? Cosa hai scritto ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Non commento nemmeno la seconda riga che non so come ti sia venuta in mente...
    Metodo facile:
    codice:
    char finale[85]="HELO ";
    char hostname[80]
    
    gethostname(hostname, sizeof(hostname));
    strncat(finale, hostname, sizeof(finale)-strlen(finale));
    finale[sizeof(finale)-1]=0;
    Metodo astuto:
    codice:
    char finale[85]="HELO ";
    size_t lenFinale=strlen(finale);
    gethostname(finale+lenFinale, sizeof(finale)-lenFinale);
    Poi in realtà non importa davvero cosa metti come nome host: i server SMTP se ne fregano altamente del nome che gli fornisci, dal momento che nel 90% dei casi sono nomi interni a reti locali.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    55
    Funziona!

    Pero' non ho ben capito cosa fanno esattamente le ultime due righe di codice

    codice:
    strncat(finale, hostname, sizeof(finale)-strlen(finale));
    finale[sizeof(finale)-1]=0;

  5. #5
    La prima riga accoda a finale la stringa hostname; il terzo parametro è il numero massimo di caratteri da accodare, che calcolo sottraendo alle dimensioni totali del buffer il numero di caratteri già occupato.
    La seconda riga si assicura che l'ultimo carattere del buffer sia un NUL, dal momento che strncat, nel caso in cui copia esattamente il numero di caratteri fissato come limite, non termina con il NUL la stringa.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    55
    Perfetto, grazie mille!

  7. #7
    Amaro C++, il gusto pieno dell'undefined behavior.

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.