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
}