Jak przekazać liczbę rzeczywistą do funkcji main().

0

Tak jak w temacie. Ten zapis niestety nie działa:

int main(int argc, long double *argv)
0

atof(3), strtof(3). No bo chyba nie w ten sposób, co pokazałeś?

0

Do main przekazywany jest niestety tylko char*. Jedyne co możesz z tym zrobić to spróbować go skomentować i ewentualnie napisać informacje że "podano niewłaściwe dane".

0

Prosto ze specyfikacji standardu c11

The function called at program startup is named main.
The implementation declares no prototype for this function.
It shall be defined with a return type of int and with no parameters:

    int main(void) { /* ... */ }

or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared):

    int main(int argc, char *argv[]) { /* ... */ }

or equivalent

Jak chcesz wczytać wartość float to robisz tak

(kod uproszczony bez jakiegokolwiek sprawdzania poprawności danych)

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

int main(int argc, char **argv)
{
    double d = atof(argv[1]);
    printf("wczytana liczba: %lf\n", d);
    return 0;
}
 

I wywołanie

$ ./a.out 5.643
wczytana liczba: 5.643000

Oczywiście zawsze należy sprawdzać poprawność wczytywanych parametrów z linii komend.

0
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
	double a = stod(argv[1]);
	cout << a;
}

stod jest jednak dopiero od C++11, więc trzeba włączyć w kompilatorze obsługę go. (g++: -std=c++0x).

1

Prawidłowy standard od gcc-4.7 jest -std=c++11

-std=c++0x był poligonem doświadczalnym dla c++11

0

strtod ew można jeszcze użyć (jeśli mamy stary kompilator, albo chcemy zrobić to w C

1 użytkowników online, w tym zalogowanych: 0, gości: 1