Avatar billede yates Nybegynder
13. oktober 2006 - 09:20 Der er 2 kommentarer og
1 løsning

Float til string i C

Hej,

Hvis man har en character buffer (Buff) og en double (X), hvorledes kan man så fylde bufferen med en string-representation af X?
Kan ikke få sprintf til at funke, så hvis dette er løsningen vil jeg gerne se et eksempel på kode. Sproget er rent C, ikke C++.
Mange tak på forhånd.
Yates.
Avatar billede yates Nybegynder
13. oktober 2006 - 09:25 #1
Aaaaah vent,

er det virkelig bare
sprintf(Buff, "%g", X)
Avatar billede segmose Nybegynder
13. oktober 2006 - 10:12 #2
Nu er du dog virkelig på sporet, dog bør du altid bruge 'n' varianten af sprintf, snprintf, for at sikre at du aldrig skriver ud over enden af din buffer.

if (snprintf(Buff, TheSizeOfBuff, "%lg", X) >= TheSizeOfBuff)
  fprintf(stderr, "truncated\n");

TheSizeOfBuff - størrelsen på arrayet Buff, ikke at forveksle med størrelsen på pointeren.
%lg - for double, %Lg for long double, der findes også nogle nyere macro der kan finde det rigtige format der skal lægges ind dem kan jeg dog ikke lige huske nu.
Check på retur værdien af snprintf for at finde ud af om det gik godt.
Avatar billede yates Nybegynder
13. oktober 2006 - 12:14 #3
Tak for svaret, Sick Mouse. Meget brugbart og i hvert fald lærerigt. Må tilstå jeg ikke er så flink altid til at tjekke om alt går godt. Hvad det angår er C et nådesløst sprog at arbejde med :-)

Y.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester