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

01.07.2007, 11:03
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
вот переделал сколько смог, но всё равно не работает собака серая!
я с массивом ms уже замучался. надо чтобы он был массивом указателей char *ms
и в него сохранялись указатели на первые вхождения подстроки в строку, т.е.
адреса на три буквы U, за которыми следуют буквы C и K.
В учебнике написано что для массивов указателей вообще не выделяется память, и как тогда быть?
Как наполнить массив указателями?
Постучитесь кто-нить в аську 268238560, объясните, иначе я на экзамен не попаду, очень нужен дельный совет!
По сути, могу даже яндекс деньгами рассчитаться за помощь, в разумных пределах конечно.
#include "stdio.h"
char * strf(char *s1, char *s2)
{
for (int m1=0;s1[m1]!='\0';m1++);
for (int m2=0;s2[m2]!='\0';m2++);
int ms[5];
int counter=0;
int ps=0;
for(int i=0;i<m1;i++)
{
if(s1[i] == s2[0])
{
int start = i;
for(int j=0;j<m2;j++)
{
if(s1[j+i] != s2[j])
ps = 1;
}
if(ps == 0)
ms[counter] = start;
}
}
return (int)ms[5];
}
void main()
{
char s1[] = "Terriuckble Fucker Stuckpidly";
char s2[] = "uck";
strf(&s1[0],&s2[0]);
for(int l=0;l<5;l++)
printf("%d \n", ms[l]);
}
|
|
|

01.07.2007, 11:07
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
и ещё: где взять alloc.h? у меня в МС визуал си++ 6.0 его нет
|
|
|

01.07.2007, 11:12
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Юзай new/delete вместо (m/c)alloc/free
|
|
|

01.07.2007, 14:44
|
|
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
Провел на форуме: 1777536
Репутация:
932
|
|
Или вот: http://www.codenet.ru/progr/visualc/esmall/add.txt
|
|
|

01.07.2007, 15:51
|
|
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме: 1174659
Репутация:
175
|
|
Сообщение от nerezus
Юзай new/delete вместо (m/c)alloc/free
плахой совет, ибо exception safe код при явном вызове delete получить трудно, потому правильный совет звучит так-
используйте умные указатели и обёртки над указателями вместо освобождения ресурсов на прямую.
|
|
|

02.07.2007, 11:17
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
подскажите вот что:
entries = (char**)realloc(entries, arr_size*sizeof(char*));
такой строкой я заново переопределяю массив указателей entries или к нему как-то добавляется свободное место?
мне нужно в цикле добавлять в динамический массив указатели и каждый раз увеличивать его размер.
а дальше вот функция, которую я родил, если не лень, попробуйте скомпилить и скажите почему она ничего не выводит:
Код:
#include "stdio.h" // ввод/вывод
#include "stdlib.h" // работа с памятью
char ** fndr(char *s1, char *s2, int *n_entrs)
{
char ** entries = NULL; // массив с указателями на вхождения
int arr_size = 2; // изначально его размер 0
int counter = 0; // счётчик записей
int destroy = 0; // если все буквы совпали то она равна нулю
for(int s1_len=0;s1[s1_len] != '\0'; s1_len++); // s1_len - длина первой строки
for(int s2_len=0;s2[s2_len] != '\0'; s2_len++); // s2_len - длина второй строки
for (int i=0; i<s1_len; i++)
{
if(s1[i] == s2[0]) // если совпал первый символ
{
for(int g=0; g<s2_len; g++)
{
if(s1[i+g] != s2[g])
destroy = 1;
}
if(!destroy)
{
if(counter >= arr_size)
{
arr_size *= 2;
entries = (char**)realloc(entries, arr_size*sizeof(char*)); // добавление памяти
}
entries[counter] = &s1[i]; // добавление указателя в массив
counter++; // счотчик инкрементируем
}
}
} // конец перебора первой строки
*n_entrs = counter;
return entries;
}
void main()
{
char s1[] = "my house is you house in you house is wife";
char s2[] = "house";
char ** entries; // массив с указателями на вхождения
int n_entrs = 0; // кол-во вхождений
entries = fndr(s1, s2, &n_entrs);
for (int n=0; n<n_entrs; n++)
printf("%s \n", entries[n]);
free(entries);
}
|
|
|

06.07.2007, 19:38
|
|
Новичок
Регистрация: 11.06.2006
Сообщений: 4
Провел на форуме: 134199
Репутация:
1
|
|
Тут некоторые сортировки на С++, реализация. Если кому надо.
http://www3.msiu.ru/~roganov/2sem/sort.cpp
|
|
|

15.09.2007, 18:07
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
дайте инфы по оверлеям с нуля плз. юзал поиск, не нашел
ЗЫ не нашел другого раздела, чтобы спросить=\
|
|
|

15.09.2007, 20:44
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме: 2009677
Репутация:
472
|
|
Piflit, я тебе уже писал, тебе нужно ознакомиться с документациями по формату PE, но уровень на котором ты находишься сейчас явно не предполагает ознакомления с этой темой. Лучше разберись с основнами для начала. Про указатели, ссылки почитай и т.п. И еще, не путай, если хочешь учиться покупай книгу именно по С, а не талмуд по С++ , ООП на данный момент тебе явно не нужно.
Оверлей – это то, что находится между физическим концом последней секции и концом файла. Конечно, оверлей может содержать и полезную для файла информацию.
wasm.ru -> статьи и форум, лучше чем там не ответят пожалуй нигде.
Последний раз редактировалось Ni0x; 15.09.2007 в 21:15..
|
|
|

15.09.2007, 20:53
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
Сообщение от Ni0x
Piflit, я тебе уже писал, тебе нужно ознакомиться с документациями по формату PE, но уровень на котором ты находишься сейчас явно не предполагает ознакмоления с этой темой. Лучше разберись с основнами для начала. Про указатели, ссылки почитай и т.п. И еще, не путай, если хочешь учиться покупай книгу именно по С, а не талмуд по С++ , ООП на данный момент тебе явно не нужно.
Спасибо за ответ. Я знаю, что ты много занешь, просто хочется услышать еще чьи-то мнения.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|