Цикл for просто проверит первый элемент, если это не цифра,
Во-первых, нет необходимости помещать эту проверку в цикл for
. Поскольку это всегда первый проверяемый символ, этот тест можно выполнять независимо от любого цикла. Если тест пройден, то цикл проверки цифр запускается либо с индекса 1, либо с индекса 0 строки, в зависимости от того, есть знак или нет знака.
Во-вторых, ваш тест для +
и -
неверен. Он всегда оценивается как true
.
Учитывая все это, вот переписать ваш код:
int loopstart = 0;
if ( !isdigit(usrIpt[0]) ) // not a digit, so see if it is + or -
{
loopstart = 1;
if (usrIpt[0] != '-' && usrIpt[0] != '+')
{
// this is not a number, so exit
}
}
После завершения теста вы начнете цикл с первого или второго символа:
int len = strlen(usrIpt);
for (int i = loopstart; i < len; ++i ) // loopstart is either 0 or 1
{
// now check if all digits
}