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

19.08.2009, 10:45
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
книжки почитать...
strcmp юзай
ps: локальные строки делать динамическими с фиксированной длиной - бред. если размер тебе известен - делай фиксированный массив.
|
|
|

19.08.2009, 11:13
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
descr это указатель и содержит только адрес выделеной памяти. Если хочеш сравнить юзай strcmp или сам посимвольно перебери и сравни. Как то так:
PHP код:
int FindString(char *str1,char *str2)
{
int nstr1,nstr2,i,j,nstr,sstr;
nstr1=strlen(str1);
nstr2=strlen(str2);
if(nstr1>nstr2)
{
nstr=nstr1-nstr2;
for(i=0;i<nstr;i++)
{
sstr=0;
for(j=0;j<nstr2;j++)
{
if(str1[j+i]==str2[j])
{
sstr++;
}
}
if(sstr==nstr2)
{
return 1;
}
}
}
else
{
return -1;
}
return 0;
}
|
|
|

19.08.2009, 12:52
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
почему нельзя присоединить к объекту класса string - цифру?
если только так и это уже будет не число. или так
Код:
int n = 5;
char f[5];
string str = "test";
itoa(n,f,5);
str.append(f);
cout << str;
Проще использовать для преобразования stringstreams )
|
|
|

20.08.2009, 10:46
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
помогите разобраться
если создавать объект обычным способом - всё нормально
а если через конструктор-копировшик - то ошибка
http://www.sendspace.com/file/6c3idu
в архиве класс и пример, показывающий ошибку (самая последняя строка)
|
|
|

20.08.2009, 12:51
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Все же не поленился и скачал, и так ...
descr = new char;
strcpy(descr, "empty");
Это простите что такое? ))
По вашему строка "empty" имеет длину в 1 символ?
Аналогично
object.setDescr("description");
Выделяем память не под массив а удаляем как массив
Поставьте descr = new char[100]; (или же другую нужную длину).
П.С. И вообще в подобных случаях ну очень хорошо помогает отладчик )
Последний раз редактировалось razb; 20.08.2009 в 12:57..
|
|
|

20.08.2009, 13:39
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
блин, а мне тока что здесь же говорили что создавать динамический массив с известным размером глупо
а как же тогда создавать массивы, если длина неизвестна изначально?
|
|
|

20.08.2009, 14:02
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
char *mas;
int a;
printf("a= ");
scanf("%d",&a);
mas = new char[a];
delete(mas);
mas = 0;
вот простой пример как
Очень наглядно, что такое указатели и как выделяется память, можно посмотреть в отладчике.
Последний раз редактировалось St0nX; 20.08.2009 в 14:10..
|
|
|

20.08.2009, 14:14
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
блин, а мне тока что здесь же говорили что создавать динамический массив с известным размером глупо
а как же тогда создавать массивы, если длина неизвестна изначально?
Есть очень удобный класс string для строк, если не известно кол-во элементов - есть не менее удобный контейнер vector )
|
|
|

20.08.2009, 15:40
|
|
Banned
Регистрация: 15.08.2009
Сообщений: 7
Провел на форуме: 58514
Репутация:
-64
|
|
Сообщение от Дикс
блин, а мне тока что здесь же говорили что создавать динамический массив с известным размером глупо
а как же тогда создавать массивы, если длина неизвестна изначально?
Тот кто это сказал, видимо имел в виду создание массива под буфер для чтения из файла или сокета, например char buff[1024] то есть в этом случае ты знаешь что не будешь читать туда более 1024. А когда длина неизвестна (например нужно скачать страницу в память) то перевыделяешь память, затем копируешь туда содержимое буфера и так далее. Почитай книгу по C без ++.
|
|
|

20.08.2009, 19:17
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
Сообщение от Дикс
блин, а мне тока что здесь же говорили что создавать динамический массив с известным размером глупо
а как же тогда создавать массивы, если длина неизвестна изначально?
лол. ты не находишь, что ты говоришь о двух разных видах массивов? Читайте блиа книжки, в первых уроках все это разжовывается. Ответ получишь быстрее, чем на форуме, с примерами и шутками прибаутками от автора.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|