LINUX.ORG.RU

указатели и аргументы на Си


0

0

Как правильно обработать в программе аргументы, с использованием их в дальнейшем как переменные типа double,
пример простая программа перемножающая вводимые в аргументах данные:

#include <stdio.h>
#include <stdlib.h>

main (int argc, double *argv[])
{
double a;
double b;
double res;

if ( argc != 3 )
{
printf("Usage: %s <A> <B>\n", argv[0]);
exit (0);
}

/* вот тут я аргументы разыменовываю */

a = *argv[1];
b = *argv[2];

/* а тут их считаю */

res = a*b;
printf("Результат произведения - %f\n", res);
return 0;
}

результаты выдаются нереальные, в чем я ошибаюсь ?

★★★

Согласно стандарту, в функцию main нужно передвать в качестве второго параметра char *argv[], т.е. указатель на массив char. В дальнейшем, через strtod можно char* преобразовать в double.

human0id ★★★
()

>main (int argc, double *argv[])

не так а так

int main(int argc, char *argv[])

>a = *argv[1];

>b = *argv[2];

не верно

a=strtod((const char*)argv[1],(char **)NULL);

вообщем man strtod

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

получился вариант

main(int argc, char **argv)
{
...
a=strtod(argv[1], NULL);
...
}

спасибо всем и man :)

x97Rang ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.