[C] char* e sprintf

di il
4 risposte

[C] char* e sprintf

Buonasera ragazzi.

Devo convertire un intero in stringa. Lo sto facendo usando la funzione sprintf.

In particolare ho scritto il seguente codice:

 char* pps;
 sprintf(pps,"%d", iii);
printf("port number stringa %s\n",pps); 
iii è di tipo int.

Una considerazione, iii sarà un intero sempre di 4 cifre. In particolare sarà un numero compreso tra 3000 e 9999.

Se al posto di char* metto char[4]... funziona ma, avrei la necessità di ottenere un char*.

Con il codice postato ottengo segmentation fault.

Qualcuno di voi sa il motivo?

Grazie a tutti per l'aiuto.

4 Risposte

  • Re: [C] char* e sprintf

    Penso che questo possa aiutarti
    int sprintf ( char * str, const char * format, ... );
    Write formatted data to string
    Composes a string with the same text that would be printed if format was used on printf, but instead of being printed, the content is stored as a C string in the buffer pointed by str.

    The size of the buffer should be large enough to contain the entire resulting string (see snprintf for a safer version).
  • Re: [C] char* e sprintf

    Light ha scritto:


    Penso che questo possa aiutarti
    int sprintf ( char * str, const char * format, ... );
    Write formatted data to string
    Composes a string with the same text that would be printed if format was used on printf, but instead of being printed, the content is stored as a C string in the buffer pointed by str.

    The size of the buffer should be large enough to contain the entire resulting string (see snprintf for a safer version).
    ciao, grazie per la risposta.

    Ammetto di non essere molto ferrato in c... Non ho capito, come dovrei agire?
  • Re: [C] char* e sprintf

    Il problema è ben spiegato qui:

    http://stackoverflow.com/questions/11055439/char-pointer-initialization-in-c

    Per ovviare potresti fare qualcosa del genere:
    
    #include <stdlib.h>
    #include <stdio.h>
    
    int main ()
    {
    int num=4444;
    char *buffer=malloc( (4+1) * sizeof(char) ); //Alloco dinamicamente lo spazio per 4 cifre più il terminatore di stringa...
    if( NULL == buffer)
        {
        fprintf(stderr,"Impossibile allocare dinamicamente la stringa...");
        exit(1);
        }
    sprintf(buffer,"%d", num);
    printf("port number stringa %s\n",buffer);
    return 0;
    }
  • Re: [C] char* e sprintf

    Ok grazie funziona
Devi accedere o registrarti per scrivere nel forum
4 risposte