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

03.11.2009, 17:51
|
|
Познающий
Регистрация: 16.07.2008
Сообщений: 82
Провел на форуме: 424387
Репутация:
142
|
|
программа вылетает и не конпелицо.

|
|
|

03.11.2009, 17:59
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме: 2584134
Репутация:
519
|
|
slesh, спс.
И последний вопрс (гна єти два часа))))
Хочу защитится от переполнения буффера.
юзаю фгетс:
Код:
int main ()
{
char buf[154];
fgets(buf,sizeof(buf),stdin);
if(strcmp(LowerCase(buf),"help") == 0)
{
printf("%s","OK");
}
system("pause");
return 0;
}
но из за этого строка не преобразовуеться в нижый регистер.
как быть?
Последний раз редактировалось slesh; 03.11.2009 в 18:30..
Причина: [code] КОД [/code]
|
|
|

03.11.2009, 18:05
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме: 2584134
Репутация:
519
|
|
Что смешного?
пограмма вылетала в файл dbghook.c указывая на строку _debugger_hook_dummy = 0;
|
|
|

03.11.2009, 18:28
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
я вот юзаю самописную функцию для перевода буфера в нижний регистр. Понимает ткоа англ буквы
Код:
void my_LowCase(char * buf)
{
while (buf[0])
{
if (buf[0]>='A' && buf[0]<='Z')
{
buf[0] += 32;
}
buf++;
}
return;
}
2 -m0rgan- оформляй код в теги [ CODE ]
|
|
|

03.11.2009, 18:33
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме: 2584134
Репутация:
519
|
|
2slesh я почти тоже:
Код:
char * LowerCase(const char * Command)
{
int num = 0;
char* buffer = (char *)malloc(strlen(Command) + 1);
while (Command[num] != '\0')
{
buffer[num] = tolower(Command[num]);
num++;
}
buffer[num] = '\0';
return (buffer);
}
Но суть не меняеться:
Код:
int main ()
{
char buf[154];
gets(buf);
if(strcmp(LowerCase(buf),"help") == 0)
{
printf("%s","OK");
}
system("pause");
return 0;
}
пашет ок, а:
Код:
int main ()
{
char buf[154];
fgets(buf,sizeof(buf),stdin);
if(strcmp(LowerCase(buf),"help") == 0)
{
printf("%s","OK");
}
system("pause");
return 0;
}
не приобразовует.
|
|
|

03.11.2009, 18:46
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
ты не забывай что gets возврает строку и вконце неё идет еще \n
|
|
|

03.11.2009, 22:06
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме: 2584134
Репутация:
519
|
|
я могу добавить \n
Код:
int main ()
{
char buf[154];
fgets(buf,sizeof(buf),stdin);
strcat(buf,"\n");
if(strcmp(LowerCase(buf),"help") == 0)
{
printf("%s","OK");
}
system("pause");
return 0;
}
тот же результат.
|
|
|

03.11.2009, 22:35
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
не там добавляеш. после help надо
|
|
|

03.11.2009, 23:22
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме: 2584134
Репутация:
519
|
|
2slesh - спс!
|
|
|

04.11.2009, 12:07
|
|
Новичок
Регистрация: 06.08.2008
Сообщений: 5
Провел на форуме: 15789
Репутация:
0
|
|
Доброе утро всем))
скажите пожалуйста, когда borland c++ 3.1 компилирует, он что использует 32 разрядный код??
просто у меня работает среда, но у меня windows sp2, а у друга у него sp3 и ему пишет ошибку:
16 разрядная подсистема ms-dos
Процессор NTVDM обнаружил недопустимую инструкцию
может ли это быть из за того что у него пак 3?
Последний раз редактировалось люля; 04.11.2009 в 14:36..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|