PDA

Visualizza la versione completa : [C] riga comando


rocco.g
29-06-2004, 20:57
ciao,
ho main( int argc, char *argv[] )


dovrei prendere al max 3 comandi del tipo:

nomeprogramma.exe 5 4 +

e fare la somma tra 5 e 4...

il problema che argv è di tipo char... come faccio a capire che valori gli vengono passati ?

SnakePlissken
29-06-2004, 21:12
usa la funzione atoi() che converte una stringa numerica nel corrispondente valore. :D
In caso di errore ritorna zero, ma ritorna zero anche se legge il valore zero ovviamente, quindi dovresti fare un piccolo controllo per stabilire se lo zero deriva da un errore oppure è più semplicemente il valore covertito.


:ciauz:

Ed_Bunker
29-06-2004, 22:13
Ci sarebbe anche questa:

STRTOL(3) Linux Programmer's Manual STRTOL(3)

NAME
strtol - convert a string to a long integer.

SYNOPSIS
#include <stdlib.h>

long int strtol(const char *nptr, char **endptr, int base);

DESCRIPTION
The strtol() function converts the string in nptr to a
long integer value according to the given base, which must
be between 2 and 36 inclusive, or be the special value 0.

The string must begin with an arbitrary amount of white
space (as determined by isspace(3)) followed by a single
optional `+' or `-' sign. If base is zero or 16, the
string may then include a `0x' prefix, and the number will
be read in base 16; otherwise, a zero base is taken as 10
(decimal) unless the next character is `0', in which case
it is taken as 8 (octal).

The remainder of the string is converted to a long int
value in the obvious manner, stopping at the first charac-
ter which is not a valid digit in the given base. (In
bases above 10, the letter `A' in either upper or lower
case represents 10, `B' represents 11, and so forth, with
`Z' representing 35.)

If endptr is not NULL, strtol() stores the address of the
first invalid character in *endptr. If there were no dig-
its at all, strtol() stores the original value of nptr in
*endptr. (Thus, if *nptr is not `\0' but **endptr is `\0'
on return, the entire string is valid.)

RETURN VALUE
The strtol() function returns the result of the conver-
sion, unless the value would underflow or overflow. If an
underflow occurs, strtol() returns LONG_MIN. If an over-
flow occurs, strtol() returns LONG_MAX. In both cases,
errno is set to ERANGE.

ERRORS
ERANGE The given string was out of range; the value con-
verted has been clamped.

CONFORMING TO
SVID 3, BSD 4.3, ISO 9899

SEE ALSO
atof(3), atoi(3), atol(3), strtod(3), strtoul(3)

rocco.g
30-06-2004, 12:19
per quanto ne so dovrebbe essere una cosa semplice...


non è che c'è un metodo più semplice ?

rocco.g
22-07-2004, 11:33
non riesco a fare lo switch bene per prendere il simbolo + o -,
cioè con atoi riesco a prendere dalla riga di comando gli interi inseriti... ma non riesco a fare uno switch in modo tale che quando ci sia il + esegua la funzione somma e quando c sia il meno la sottrazione...

con atoi ottengo come risultato un intero...

rocco.g
22-07-2004, 15:58
ok lasciate stare... ho risolto da solo grazie lo stesso :D

Loading