PDA

Visualizza la versione completa : C++ Aiuto su Argomenti della main()


Nerone8382
11-02-2003, 21:37
Ciao,
una domanda facile facile, se io devo passare alla main un numero invece che una stringa come faccio poi a salvarlo in una variabile int? Non ci riesco...
Esempio, voglio passare il numero 5 alla main,
per richiamare il programma scrivo
nomeprogramma 5
ma come metto questo 5 in una variabile int?
se faccio il cast e scrivo
int i = (int)argv[1];
i non assume il valore 5, ma 53, il valore ascii del carattere '5'
aiutatemi....
:-)

minoz
11-02-2003, 22:33
C considera i caratteri come numeri in un range da 0 a 255 per poter rappresentare la tabella ASCII.. quindi se passi un carattere da convertire in numero:

int i = argv[1] - '0';

Nerone8382
12-02-2003, 00:20
Grazie, questo è un problema risolto, però se ho da convertire 55 come numero? sono due caratteri, quindi una stringa, questa come la converto?

Andrea Simonassi
12-02-2003, 00:29
int i = argv[1][0] - '0';

minoz
12-02-2003, 00:35
Non mi viene in mente nessuna funzione esistente (credo che ci sia).. cmq puoi risolvere tenendo a mente che...

55 = 5*10+5*1

634 = 6*100 + 3*10 + 4*1

e ti puoi creare una tua funzione..

Nerone8382
12-02-2003, 01:03
Grazie mille, è quallo che ho fatto, speravo di trovare una soluzione più veloce^__^ ciao ciao

Level
12-02-2003, 01:22
E' da un po' che non smanetto in C e C++, ma non esiste mica la funzione
atoi(stringa_da_convertire_in_intero) ?

Johnny_Depp
12-02-2003, 06:14
Così può andare?

#include <stdio.h>
#include <stdlib.h> // atoi()

int main(int argc, char *argv[]){
int i=0;
char *p, c[10];
p=c;

if(argv[1]){
p=argv[1];
i=atoi(p);
if(i)printf("%d INT\n",i); // riconosce parametri maggiori di (0) zero
else printf("%s NON INT\n",argv[1]);
}
else printf("\aZERO PARAMETRI INSERITI\n");

return 0;
}

r0x
12-02-2003, 22:27
Vedo svariate righe superflue.. :dottò:

Johnny_Depp
12-02-2003, 23:22
Così va meglio??? :adhone:

#include <stdio.h>
#include <stdlib.h> // atoi()

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

if(char *p=argv[1]){
if(int i=atoi(p))printf("%d INT\n",i); // riconosce parametri maggiori di (0) zero
else printf("%s NON INT\n",argv[1]);
}
else printf("\aZERO PARAMETRI INSERITI\n");

return 0;

}

Loading