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....
:-)
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';
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
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;
}
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;
}