2017-01-12 10 views
-1

У меня есть структура, которая имеетПроверка ИНТ не альфа

int Hour 
int Min 
int Sec 

Я чтение строки из файла. У файла есть текст: 23:21:30 12:32:54

Я разделил целую строку на раздельные времена, а затем второй разделил на структуру. Я делаю

structure[x].Hour = atoi(token); 

Тогда мне нужно проверить, если структура [х] .Hour не альфа.

if(isalpha(structure[x].Hour)){//DO Something} 

не работает. Есть идеи?

+0

check 'token' .. – BLUEPIXY

+4

Поле' hour' уже целое. В целых числах нет алфавитного символа. Перед вызовом atoi вам нужно будет проверить свой токен для альфа-символа. – Gerhardh

ответ

1

Вы действительно не задать вопрос или сообщить нам, что проблема у вас есть, но я все равно поможет вам ...

Что вы делаете в неправильном порядке. Если вы вызовете atoi с нечисловыми строками, он вернет 0. Затем вы проверяете, не является ли целое число 0, а это, конечно же, нет. Вам нужно сделать это в обратном порядке: сначала убедитесь, что у вас нет нечисловой строки (которую вы должны делать в цикле); И затем преобразует его в целое число.

Это действительно может быть сделано в виде одного вызова функции стандартной библиотеки, но не до aoti, который не имеет такой поддержки, но с функцией strtol.

Функция strtol имеет встроенную функцию проверки ошибок и поддержку, чтобы помочь вам разобраться, была ли вся строка преобразована или нет.