Portál AbcLinuxu, 3. listopadu 2025 23:20
char znaky[] = {'1', '2', '3'};
float cislo;
aby cislo=123 ?
strtof z stdlib.h
char* str = "1.23";
float f = strtof(str, NULL);
#include <stdio.h>
#include <stdlib.h>
int main () {
char str[] = {'1', '2', '0', '.', '3','2'};
fprintf (stdout, "f: %0.2f\n", strtof(str, NULL));
return 0;
}
a output:
$ cc -g -Wall -o atest test.c
$ ./atest
f: 120.32
$
nebo je treba pouzit druhy parametr strtof, aby funkce vedela, kde retezec konci.To mi nesedí s manuálovou stránkou. Druhý parameter slúži len na výstup. Skrátka treba zariadiť, aby za tými znakmi, ktoré sa skonvertujú na float bolo niečo, čo tú konverziu zastaví prv než sa dostane mimo alokovanej pamäte. '\0' alebo písmeno, medzera, ...
Ale si to tenkrat fungovalo jen nahodou. Holt pri programovani v cecku musi byt clovek porad ve strehu...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.