Я уже сделал это успешно (с положительным результатом) с этим кодом:
Хорошо. Важное понимание заключается в том, чтобы развивать успех.
Поскольку int charTOint(char * c) {
хорошо работает с положительными значениями, возможно, перепишите его, используя unsigned
. Мы получаем больший диапазон, поскольку UINT_MAX
обычно больше INT_MAX
.
unsigned charTOunsigned(const char * c) {
char p = *c;
unsigned ergebnis = 0;
while (p) {
ergebnis = ergebnis * 10 + (p - '0');
c++;
p = *c;
}
return ergebnis;
}
Мне нужно, чтобы он также работал с отрицательными числами / массивами символов, начинающимися с '-'.
Теперь, вооружившись charTOunsigned()
, используйте этот вариант хорошего существующего кода, чтобы заново создать int charTOint()
, который соответствует дополнительной цели. С обычным дополнительным положительным диапазоном charTOunsigned()
, int charTOint()
будет легко обрабатывать строку, которая преобразуется в INT_MIN
.
int charTOint(const char * c) {
return (*c == '-') ? -charTOunsigned(c+ 1) : charTOunsigned(c);
}
Конечно, можно было бы кодировать автономный charTOint()
, но я хотел подчеркнуть, что повторное использование кода . Это делает продуктивного кодера.