С cppreference для float strtof(const char* str, char** str_end)
:
Если преобразование не может быть выполнено, возвращается 0 и *str_end
устанавливается на str
.
Таким образом, вы можете просто проверить, если *str_end == str
, так как в любом другом случае (например, чтение литерала 0) *str_end
должен иметь продвинутый по крайней мере один символ.