[C] convertire numeri in stringhe

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
DeN96
Prode Principiante
Messaggi: 15
Iscrizione: lunedì 19 marzo 2018, 15:32
Sesso: Maschile

[C] convertire numeri in stringhe

Messaggio da DeN96 »

Ciao a tutti, ho scritto un client-server che comunica tramite socket. Ad un certo momento devo inviare un numero ad un client e devo scriverlo in un buffer.
Ho provato ad utilizzare funzioni come snprintf ma non ho ottenuto risultati positivi... Cerco di spiegarmi meglio trascrivendo i frammenti di codice del server e del client

Lato server: "corr->n_msgs" contiene il numero intero che devo inviare al client. Converto in questo modo il numero intero e poi lo invio

Codice: Seleziona tutto

char *str;
str=calloc(4, sizeof(char));
*str=(char)(corr->n_msgs);
Il client riceve tutto correttamente e poi trasforma il buffer in un numero in questo modo:

Codice: Seleziona tutto

size_t nmsgs = *(size_t*)(msg.data.buf);
Non posso modificare il client ma solo il server... non riesco a capire come mai per numeri maggiori di zero il tutto funziona ma quando corr->n_msgs è uguale a zero il client con quell'operazione trasforma il numero 0 in un altro numero.
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: [C] convertire numeri in stringhe

Messaggio da gila75 »

Ciao, se non ricordo male,
C'e' itoa() per convertire int-->str.
TommyB1992
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 862
Iscrizione: domenica 7 luglio 2013, 15:55
Desktop: GNU/Linux
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

Re: [C] convertire numeri in stringhe

Messaggio da TommyB1992 »

si c'è itoa e se non c'è, puoi facilmente trovarlo su google.

Non riesco a capire come faccia a convertire qualcosa:
char *str;
str=calloc(4, sizeof(char));
*str=(char)(corr->n_msgs);
Crei uno spazio di memoria e ci butti dentro n_msgs convertito a char? il char di 7 è un carattere chiamato "BEL", mentre lo zero è NULL, ecco perchè probabilmente hai problemi di conversione.

Se poi qualcuno mi smentisce ritiro ciò che ho detto.
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: [C] convertire numeri in stringhe

Messaggio da gila75 »

Ma scusa perchè sprintf non ti funziona ?

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main () {
	char str[80];
	int a=1975;	
	int len;
	sprintf(str, "%d", a);
	printf ("stringa risultante: %s\n",str);
	len=strlen(str);
	printf ("lunghezza stringa=%d\n",len);
	return(0);
}
out:

Codice: Seleziona tutto

gila@gila-pc:~/Scrivania$ ./xx
stringa risultante: 1975
lunghezza stringa=4
gila@gila-pc:~/Scrivania$ 
Credo che faccia al caso tuo.
qui invece:

Codice: Seleziona tutto

char *str;
str=calloc(4, sizeof(char));
*str=(char)(corr->n_msgs);
non capisco cosa vuoi fare. In poche parole riservi 4 spazi char, poi cerchi di fare un cast:

Codice: Seleziona tutto

*str=(char)(corr->n_msgs)
ma a me non funziona.
Itoa, forse è deprecato.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti