ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

12.01.2008, 01:19
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
dinar_007, не обдалбывайся так больше, чтобы постить в КОДИНГе. Мне за тобой удалять еще
Последний раз редактировалось _Great_; 12.01.2008 в 01:21..
|
|
|

12.01.2008, 20:15
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме: 233095
Репутация:
21
|
|
Я столкнулся с небольшой проблемкой при написании тел. справочника. Я использовал переменные типа чар(Имя, фамилия...) и интеджер(телефон, возраст...). Я, когда тестил прогу, случайно ввел в в поле тел номера буквы и прога полетела багом. Как можно сделать проверку того, что ввел пользователь - цифры или буквы, чтоб потом можно было вернутся на предидущий этап?
|
|
|

12.01.2008, 20:21
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
Чего то ты "заморочился"
atol strtol atoi(маловат правда) не вылетают с ошибкой даже если там будут все буквы просто результат будет 0(ноль)!
... другое дело если ты пытаешься по DAO (ODBC) передать поле таблице в базе
дык просто переведи предварительно ATO*** -ами в то что тебе нужно!
если же у тебя MFC элементы, то просто не используй int как тип переменной.... всегда пользуйся CString а в соответствии с логикой переводи из CString в то что тебе нужно.
Последний раз редактировалось Delimiter; 12.01.2008 в 20:30..
|
|
|

12.01.2008, 20:27
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме: 233095
Репутация:
21
|
|
спс, но ты немного не понял - мне нужно узнать - есть ли там буквы или нету. Мне нужно, чтоб там были только цыфры и ничего лишнего. atoi немного не в этом случае, так как мне всеравно нужен результат в цыфрах, а не в буквах. Как можно такую проверку сделать?
|
|
|

12.01.2008, 20:33
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
хоть я и не понял "ГДЕ ЭТО ТАМ"
bool IsAllDigits(char *str)
{
for(int i=0 *(str+i)!=0;i++)
if(*(str+i)<0x30 || *(str+i)>0x39)
return false;
return true;
}
где str -предварительный буфер.
если же ты используешь scanf .... то о каком возврате тут говорить.... кароче я не понял где это "ТАМ".
например:
char str[30];
do {
printf("Input telephone number");
scanf("%s",str);
} while(!IsAllDigits(str));
long tel=atol(str);
Последний раз редактировалось Delimiter; 12.01.2008 в 20:49..
|
|
|

12.01.2008, 20:50
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме: 233095
Репутация:
21
|
|
int age;
char tage[] = "введите ваш возраст";
CharToOem(tage,tage);
printf(tage);
cin>>age;
так вот - мне нужно, чтобы в age были только цифры без всяких преобразований - только проверка того, что ввел пользователь, а именно: буквы или цифры.
|
|
|

12.01.2008, 20:56
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
то есть когда я ввожу свою собственную проверку на валидность(правильность) тебе не нравится????
ведь твоя команда
cin>>age
переполняет.... выходит за рамки
байты в памяти где зарезервировано место для age это 0 и 1
0 1 2 3 4
ты же посылаешь туда .... для того что бы был краш более 2-х байтов
место 2 и 3 заняты под другие нужды, ДЕЛО НЕ В СООТВЕТСТВИИ ТИПОВ!!!!
куда вставлять проверку если ты переполняешь одной командой????
8)))) вслушивайся в слова .... сейчас сменю географическое положение.
если еще не сделаешь напишу пример!
Последний раз редактировалось Delimiter; 12.01.2008 в 21:05..
|
|
|

12.01.2008, 21:00
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме: 233095
Репутация:
21
|
|
м... я немного протупил... Тогда возможно age обьявить чаром и потом сделать проверку и преобразование, я так понял? если да, то плз, напиши небольшой пример с преобразованием, как он юзается.
|
|
|

12.01.2008, 21:59
|
|
Участник форума
Регистрация: 05.05.2007
Сообщений: 171
Провел на форуме: 1050662
Репутация:
435
|
|
а че типа массив цифер 1234567890 низя сделать, и если не подходит ни одному элементу массива то нафиг
|
|
|

12.01.2008, 22:07
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме: 233095
Репутация:
21
|
|
не, просто я думаю, чтоб не усложнять жизнь - просто проверить, все ли элементы чарового age являются цифрами и преобразовать чар в инт, если такое возможно... но как сделать проверку и преобразование - я не знаю...
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|