HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 01.07.2007, 11:03
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

вот переделал сколько смог, но всё равно не работает собака серая!
я с массивом 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]);

}
 
Ответить с цитированием

  #32  
Старый 01.07.2007, 11:07
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

и ещё: где взять alloc.h? у меня в МС визуал си++ 6.0 его нет
 
Ответить с цитированием

  #33  
Старый 01.07.2007, 11:12
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Юзай new/delete вместо (m/c)alloc/free
 
Ответить с цитированием

  #34  
Старый 01.07.2007, 14:44
Ky3bMu4
Постоянный
Регистрация: 03.02.2007
Сообщений: 520
Провел на форуме:
1777536

Репутация: 932


Отправить сообщение для Ky3bMu4 с помощью ICQ
По умолчанию

Или вот: http://www.codenet.ru/progr/visualc/esmall/add.txt
 
Ответить с цитированием

  #35  
Старый 01.07.2007, 15:51
sni4ok
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме:
1174659

Репутация: 175
Отправить сообщение для sni4ok с помощью ICQ
По умолчанию

Цитата:
Сообщение от nerezus  
Юзай new/delete вместо (m/c)alloc/free
плахой совет, ибо exception safe код при явном вызове delete получить трудно, потому правильный совет звучит так-
используйте умные указатели и обёртки над указателями вместо освобождения ресурсов на прямую.
 
Ответить с цитированием

  #36  
Старый 02.07.2007, 11:17
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

подскажите вот что:

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);
}
 
Ответить с цитированием

  #37  
Старый 06.07.2007, 19:38
Z0rd$23
Новичок
Регистрация: 11.06.2006
Сообщений: 4
Провел на форуме:
134199

Репутация: 1
По умолчанию

Тут некоторые сортировки на С++, реализация. Если кому надо.
http://www3.msiu.ru/~roganov/2sem/sort.cpp
 
Ответить с цитированием

  #38  
Старый 15.09.2007, 18:07
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

дайте инфы по оверлеям с нуля плз. юзал поиск, не нашел

ЗЫ не нашел другого раздела, чтобы спросить=\
 
Ответить с цитированием

  #39  
Старый 15.09.2007, 20:44
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме:
2009677

Репутация: 472
По умолчанию

Piflit, я тебе уже писал, тебе нужно ознакомиться с документациями по формату PE, но уровень на котором ты находишься сейчас явно не предполагает ознакомления с этой темой. Лучше разберись с основнами для начала. Про указатели, ссылки почитай и т.п. И еще, не путай, если хочешь учиться покупай книгу именно по С, а не талмуд по С++ , ООП на данный момент тебе явно не нужно.
Цитата:
Оверлей – это то, что находится между физическим концом последней секции и концом файла. Конечно, оверлей может содержать и полезную для файла информацию.
wasm.ru -> статьи и форум, лучше чем там не ответят пожалуй нигде.

Последний раз редактировалось Ni0x; 15.09.2007 в 21:15..
 
Ответить с цитированием

  #40  
Старый 15.09.2007, 20:53
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

Цитата:
Сообщение от Ni0x  
Piflit, я тебе уже писал, тебе нужно ознакомиться с документациями по формату PE, но уровень на котором ты находишься сейчас явно не предполагает ознакмоления с этой темой. Лучше разберись с основнами для начала. Про указатели, ссылки почитай и т.п. И еще, не путай, если хочешь учиться покупай книгу именно по С, а не талмуд по С++ , ООП на данный момент тебе явно не нужно.
Спасибо за ответ. Я знаю, что ты много занешь, просто хочется услышать еще чьи-то мнения.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ