View Full Version : [C] Inserire numeri in una stringa
giovandrea
12-08-2013, 09:15
Ciao a tutti, ho un piccolo problema con un esercizio.
Mi viene chiesto di scrivere una funzione che riceve in ingresso un numero reale e lo memorizza in una stringa, punto compreso. Passo alla funzione il float ma poi non riesco a capire come farglielo memorizzare in una stringa. Sapete darmi una mano?
Grazie :D
giovandrea
12-08-2013, 09:54
Grazie per la risposta, ma lo dovrei svolgere senza utilizzare funzioni di libreria particolari.
Quello che non capisco è che se inserisco un intero va bene, con un reale mi mostra 0.0000 e non il numero che gli ho passato :muro:
hai provato ad usare i double?
giovandrea
12-08-2013, 12:06
Provato, è sempre uguale.
Sicuramente ci deve essere qualche cosa che mi sfugge nel codice / che non capisco.
Voi come lo fareste?
Ho preparato un esercizio simile per il mio esame.
Ma se posti il codice che hai fatto fino ad ora non è meglio? Possiamo aiutarti di più. La soluzione più facile che mi viene in mente comunque è lo strcpy()...
Altrimenti un altro metodo potrebbe esserci però meglio che posti il codice...
giovandrea
12-08-2013, 15:38
Premettendo che sono una vera schiappa, questo è il codice che ho scritto io:
#define DIM 10
void stamp (float);
int main()
{
char str[DIM];
int i;
double f;
int a[DIM];
scanf ("%f", &f);
stamp(f);
return 0;
}
void stamp (float n) {
char str[DIM];
str[0]=n;
printf ("\n%f", *str);
printf ("\n%f", str);
return;
}
Ho provato ad inserire diverse formattazioni.
@Antonio23: ci provo e ti faccio sapere
[EDIT]= non capisco quello '0'
Printf("\n%f",str) ?
Visto che str è tipo char[]
Non andrebbe printf("\n %s",str) ?
giovandrea
12-08-2013, 15:59
@xemf: se metto %s mi stampa caratteri a caso.
Credo che il problema sia proprio nella semantica, ma non ne riesco a venire a capo.
@Antonio23: si, ricordo per la tavola ASCII. Però non mi serve a molto per salvarmi il numero in una stringa, o sbaglio?
Premettendo che sono una vera schiappa, questo è il codice che ho scritto io:
#define DIM 10
void stamp (float);
int main()
{
char str[DIM];
int i;
double f;
int a[DIM];
scanf ("%f", &f);
stamp(f);
return 0;
}
void stamp (float n) {
char str[DIM];
str[0]=n;
printf ("\n%f", *str);
printf ("\n%f", str);
return;
}
Ho provato ad inserire diverse formattazioni.
@Antonio23: ci provo e ti faccio sapere
[EDIT]= non capisco quello '0'
Occhio che stai facendo un cast implicito da double a float, sistema usando lo stessi tipo che male non fa ;)
@xemf: se metto %s mi stampa caratteri a caso.
Credo che il problema sia proprio nella semantica, ma non ne riesco a venire a capo.
@Antonio23: si, ricordo per la tavola ASCII. Però non mi serve a molto per salvarmi il numero in una stringa, o sbaglio?
Ti stampa i caratteri relativi al numero che hai salvato nella stringa, ti serve convertire dalla tavola ASCII
se '0' vale X
'1' vale X+1
'2' vale X+2
etc.
tu vuoi salvare il tuo numero nella stringa, per cui hai bisogno di quel X per fare la conversione..
Q8
giovandrea
12-08-2013, 17:12
Grazie delle risposte :sofico:
Ma... non riesco ancora a capire la logica. :muro: :muro: :muro: :muro: :muro:
Cioè, ci sono da stamattina e ci sto uscendo matto, lo so che è una stupidata.
Quindi, passo il float alla funzione, la funzione fa una serie di calcoli (perchè proprio quelli?) prima domanda.
e.g. 1457 è il tuo intero, che può essere la parte intera o frazionaria
(1457 - (1457/10) *10) + '0' dove (1457/10) è vista come divisione intera, e iteri il procedimento per tutte le cifre...
@xemf: quel double/float l'ho dimenticato :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.