Originariamente inviato da lolide
atoi ha bisogno di un puntatore a char, non di un char.
Quindi:
codice:
char* c = new char(array[0]);
int i = atoi(c);
delete c;
None. La stringa deve essere NUL-terminata, e comunque non serve a niente allocare dinamicamente la memoria. Basterebbe piuttosto fare:
codice:
char str[2]={array[0], 0};
int i = atoi(str);
Ma se vuoi convertire un singolo carattere fai prima a fare:
codice:
if(isdigit(array[0]))
{
int i = array[0]-'0';
}
else
// il carattere non è un numero
Originariamente inviato da barrelshock
codice:
int Char_to_Int(char c)
{
return (int)(c-48);
}
Chi ti garantisce che lo zero sia il carattere 48? Usa il char literal '0'.
In ogni caso, per tornare al problema iniziale, basta una semplice sscanf:
codice:
int primo, secondo;
if(sscanf(array, "%d-%d", &primo, &secondo)!=2)
{
// se siamo qui si è verificato un errore di parsing
}
else
{
// i due valori sono rispettivamente in primo e secondo
}