None. La stringa deve essere NUL-terminata, e comunque non serve a niente allocare dinamicamente la memoria. Basterebbe piuttosto fare: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;![]()
Ma se vuoi convertire un singolo carattere fai prima a fare:codice:char str[2]={array[0], 0}; int i = atoi(str);
codice:if(isdigit(array[0])) { int i = array[0]-'0'; } else // il carattere non è un numeroChi ti garantisce che lo zero sia il carattere 48? Usa il char literal '0'.Originariamente inviato da barrelshock
codice:int Char_to_Int(char c) { return (int)(c-48); }
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 }

Rispondi quotando