Am o bucata de cod in C si sunt cateva linii de cod pe care nu le inteleg(ultimele 3 linii). Imi puteti explica cum lucreaza? Multumesc!



/* atof: converteste sirul de caractere s la tipul double */

double atof(char s[ ])

{

double val, putere;

int i, semn;

for (i=0; isspace(s[i]); i++) /* treci peste spatiile albe */

;

semn = (s[i] == ‘-’) ? -1 : 1;

if (s[i] == ‘+’|| s[i] == ‘-’)

i++;

Am O Bucata De Cod In C Si Sunt Cateva Linii De Cod Pe Care Nu Le Intelegultimele 3 Linii Imi Puteti Explica Cum Lucreaza Multumesc Atof Converteste Sirul De Ca class=

Răspuns :

e mai "precisa"

double atof(char * s) {

   double rez = 0, dec = 1;

   int pct = 0, minus = 0;

   if ( * s == '-') {

       s++;

       minus = 1;

   }

   while ( * s) {

       if (pct) {

           dec = dec / 10;

           rez = rez + ( * s - '0') * dec;

       }

       else {

           if ( * s == '.')

               pct++;

           else

               rez = rez * 10.0 + ( * s - '0');

       }

       s++;

   }

   if (minus)

       return -rez;

   else

       return rez;

}