Я думаю, что ваша вторая функция немного запутана, но это легко исправить:
bool digit_validation(string s) {
size_t length = strlen(s);
for (size_t i = 0; i < length; i++) {
if (isdigit(s[i])) {
return true;
}
}
return false;
}
Как другие заметили, ваш l oop мог быть пропущен, и это привело бы к конец функции, ничего не возвращая. Как правило, вы хотите структурировать свой код так, чтобы точки выхода были очевидны, а в вашем оригинале этого не было.
Это еще не определяет "все цифры", вам все равно придется исправить это, инвертировав лог c:
bool digit_validation(string s) {
size_t length = strlen(s);
if (!length) {
return false;
}
for (size_t i = 0; i < length; i++) {
if (!isdigit(s[i])) {
return false;
}
}
return true;
}