Функция перевода строки цифр в число - C (СИ)
Формулировка задачи:
Если в качестве первого аргумента я указываю какую либо букву, то в качестве результата почему то выводится число 7. если же я пишу доллары, то с каждым последующим долларом выводимое число возрастает.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
double money_value(char s[]);
int main(int argc, char **argv)
{
if(argc < 2)
{
fprintf(stderr, "Вы не ввели никакого числа\n");
exit(1);
}
double val = money_value(argv[1]);
fprintf(stdout, "%.10f", val);
}
double money_value(char s[])
{ int i = 0, sign=1;
double val = 0;
double power=1;
while(!isdigit(s[i]) && s[i]!='.')
{
if(s[i]=='-')
{
sign = -1;
}
++i;
}
while(isdigit(s[i]))
{
val = 10*val + (s[i]-'0');
++i;
}
if(s[i]=='.')
{
++i;
}
while(isdigit(s[i]))
{
val = 10*val + (s[i]-'0');
power *= 10;
++i;
}
while(s[i]=='$')
{
++i;
}
return val == 0 ? 0 : sign*val/power;
}
./money_value da
7.0000000000
./money_value $
7.0000000000
./money_value $$
3785.0000000000
Решение задачи: «Функция перевода строки цифр в число»
textual
Листинг программы
./money_value '$$'