[ 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. Derec

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

    Joined:
    8 Nov 2007
    Messages:
    74
    Likes Received:
    4
    Reputations:
    0
    Я вчера тоже нашел эту функцию, случайно пропустил в документации. За ответ Ваш все равно большое спасибо. ПРо FILE не мог найти! :)
     
  2. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    Нужно по номеру мобильного определить оператора, казалось бы всё просто, но то что набрасал работает но не правильно.
    Code:
    #include <iostream.h>
    #include <conio.h>
    #include <string.h>
    void main()
    {
       char *str="067,097,063,093,098,068,066";
       char* mob;
       char *strt;
       mob=new char[10];
       cout<<"Input mob: ";
       cin.getline(mob,10);
       strt=strtok(str,",");
       while(strt !=NULL)
       {
       	if(strncmp(strt,mob,3)==0)
          {
          	if((strt="067")&&(strt="097")) cout<<"Operator "<<strt<<" Kyivstar \n";
             if((strt="063")&&(strt="098")&&(strt="093")) cout<<"Operator "<<strt<<" Life \n";
          }
       	strt=strtok(NULL,",");
       }
       getch();
       delete []mob;
    }
    
    Или совсем не выводит или выводит все операторы, а нужно что бы правильный =)
     
  3. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Адовая смесь с++ и си...

    PHP:
    #include <string>
    #include <map>
    #include <iostream>

    void main()
    {
        
    std::map<std::stringstd::stringoperators;
        
    operators.insert(std::make_pair("067""Kyivstar"));
        
    operators.insert(std::make_pair("097""Kyivstar"));
        
    operators.insert(std::make_pair("063""Life"));
        
    operators.insert(std::make_pair("098""Life"));
        
    operators.insert(std::make_pair("093""Life"));

        
    std::string number;

        while(
    true)
        {
            
    std::cout << "Enter number or q to exit: ";
            
    std::cin >> number;

            if(
    number == "q")
                break;

            if(
    number.length() != 10//можно еще проверить, что все символы - цифры, я опустил это
            
    {
                
    std::cout << "Incorrect number" << std::endl;
                continue;
            }

            
    std::map<std::stringstd::string>::const_iterator oper operators.find(number.substr(03));

            if(
    oper == operators.end())
                
    std::cout << "Operator not found" << std::endl;
            else
                
    std::cout << "Operator: " << (*oper).second << std::endl;
        }
    }
     
    #5803 GRRRL Power, 14 Nov 2010
    Last edited: 14 Nov 2010
  4. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    return
    если хочется над учителем пошутить :))
    Code:
    #include <cstdio>
    #include <cstdlib>
    #include <windows.h>
    
    struct z{
    	char *op;
    	char **prx;
    	int c;
    };
    
    int c;
    z *a;
    
    void i_(char *s){
    	--c;
    	a[c].prx = (char**)realloc(a[c].prx, ++a[c].c * sizeof(char*));
    	a[c].prx[a[c].c - 1] = strdup(s);
    	++c;
    	return;
    }
    
    struct u{u& operator()(char*s){i_(s);return*this;}};
    
    u i(char *s){
    	a = (z*)realloc(a, sizeof(z) * (c + 1)); 
    	a[c].op = strdup(s), a[c].c = 0, a[c].prx = 0, ++c;
    	return u();
    }
    
    void s(char *s){
    	for (int i = 0; i < c; i++){
    		for (int j = 0; j < a[i].c; j++){
    			if (!strcmp(a[i].prx[j], s)){
    				puts(a[i].op); return;
    			}
    		}
    	}
    	puts("not found");
    }
    
    void d(){
    	for (int i = 0; i < c; i++){
    		for (int j = 0; j < a[i].c; j++){
    			free(a[i].prx[j]);
    		}
    		free(a[i].prx);
    		free(a[i].op);
    	}
    	free(a), a = 0, c = 0;
    }
    
    int main(){
    	i("Kyivstar")("077")("087")("077")("099")("033");
    	i("Life")("011")("012")("013")("014")("015")("016")("017")("018");
    	s("013"), s("087");
    	d();
    }
    
    пусть покумекает ))
     
  5. Jer1cho

    Jer1cho Member

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    65
    Reputations:
    10
    Code:
    #include "stdafx.h"
    #include <winsock2.h>
    #include <conio.h>
    #include <fstream>
    
    #pragma comment(lib, "Ws2_32.lib");
    
    #define PORT 80
    #define SERVER "127.0.0.1"
    #define MAX_PACKET_SIZE 4096
    
    int _tmain(int argc, char* argv[])
    {
        char sendbuffer[2048];
    
    	strcpy(sendbuffer, "GET http://localhost/xx.php");      
    	strcat(sendbuffer, " HTTP/1.0\r\n");	
    	strcat(sendbuffer, "User-Agent: Opera\r\n");
    	strcat(sendbuffer, "Host: localhost\r\n");
    	strcat(sendbuffer, "Connection: close");
    	strcat(sendbuffer, "\r\n\r\n");
    
    	WSADATA wsaData;
    	SOCKET socketfd;
    
    	struct sockaddr_in server_addr; 
    	struct hostent *h;
    	char response[1024*5];
    
    	WSAStartup(MAKEWORD(2,2), &wsaData);
    
    	socketfd=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    
    	server_addr.sin_family = AF_INET;
    	server_addr.sin_port = htons(PORT);
    
    	server_addr.sin_addr.S_un.S_addr = inet_addr(SERVER);
    
    	if(h = gethostbyname(SERVER)){
    		((unsigned long *)&server_addr.sin_addr)[0] = ((unsigned long **)h -> h_addr_list)[0][0];
    	} else {
    		printf("Invalid address %s\n", SERVER);
    
    		closesocket(socketfd);
    
    		WSACleanup();
    
    		return -1;
    	}
    
    	if (connect(socketfd, (const struct sockaddr*)&server_addr, sizeof(struct sockaddr))){
    		printf("Connect error %d\n", WSAGetLastError());
    
    		return -1;
    	}
    
    	send(socketfd, sendbuffer, strlen(sendbuffer), 0);
    
    	recv(socketfd, &response[0], 2048, 0);
    
    	printf("%s\n", response);
    
    	FILE *OutFile = fopen("c:\\test.txt", "w");
    	fprintf(OutFile, "%s %d\n", response, strlen(response));
    	fclose(OutFile);
    
    	memset(&response, 0, sizeof(response));
    
    	closesocket(socketfd);
    
    	WSACleanup();
    
    	getch();
    
    	return 0;
    }
    
    На выходе получается

    Code:
    zomgМММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММ 
    
    zomg - полученных текст, все остальное как понимаю остаток свободного места в буффере, как убрать и оставить только zomg на выходе?
     
  6. cupper

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    могу предположить что после zomg не стоит \0, вот он и продолжает выводить до тех пор пока не встретить символ конца строки.

    recv вроде возвращает реальное число считанных байт.
    printf("%s", buf) выводит символы начиная от указанного адреса и пока не встретит символ конца строки '\0'

    Либо сам его записывай в буфер по количеству принятых байт, либо выводить от response до response + число_получ_байт

    recv()

    Code:
    number_characters_read = recv(socket_fd, response, bufSize,0);
    if( number_characters_read == 0 ) {
    strcpy(response, "EMPTY");
    return response;
    }
    
    response[number_characters_read+1]='\0';
    
    на подобие этого тебе надо сделать
     
    #5806 cupper, 15 Nov 2010
    Last edited: 15 Nov 2010
    1 person likes this.
  7. boton12

    boton12 New Member

    Joined:
    17 Feb 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Все привет, может не в той теме написал но очень интерисует разработка простой базы данных для учета посещяемости занятий в танцевальной школе, размешение такой базы данных планируется на компьютере(не на сайте)
    icq 254816369
     
  8. cupper

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    можно ли сделать так и если да то как правильно
    Code:
    class A
    {
    A(int x): x_(x){};
    // т.е. вызвать конструктор этого же класса с отличной сигнатурой
    A(int x, int y): A(x), y_(y) {};
    int x_, y_;
    }
    
     
  9. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    http://stackoverflow.com/questions/308276/c-call-constructor-from-constructor
     
    2 people like this.
  10. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    2cupper попробую объяснить на примерен msvc++
    в общем то ради экспиримента можно но это катастрофично будет
    прежде чем твой список инициализации
    получит управление уже создадутся все базовые классы
    потом ты вызываеш другую версию конструктора повторно создаются
    базовые классы и все крах
    допустим вызываем конструктор с двумя аргументами
    Code:
    struct base{
    	base(){}
    };
    
    class A:base{
    public:
    	A(int x): x_(x){}
    	A(int x, int y){   попадаем сначало сюда
    push        ebp  
    mov         ebp,esp 
    sub         esp,44h 
    push        ebx  
    push        esi  
    push        edi  
    mov         dword ptr [ebp-4],ecx 
    mov         ecx,dword ptr [this] 
    call        base::base (42B8F7h) тут создаем базовые классы
    ((void(__thiscall*)(A*,int))0x0042D6E0)(this,x); // addr A(int x):x_(x){}
    // or new(this)A(x);
    mov         eax,dword ptr [x] 
    push        eax  
    mov         edx,offset A::A (42D6E0h) 
    mov         ecx,dword ptr [this] 
    call        edx   вызываем к-тор с одним аргументом
                               прыгаем(см листинг ниже)
    		y_ = y;
    mov         eax,dword ptr [this] вернулись сюда уже два раза   
    mov         ecx,dword ptr [y]    создали базовые классы КОПЕЦ!!!
    mov         dword ptr [eax+4],ecx 
    	}
    mov         eax,dword ptr [this] 
    pop         edi  
    pop         esi  
    pop         ebx  
    mov         esp,ebp 
    pop         ebp  
    ret         8    
    --- No source file -------------------------------------------------------------
    /////////////////////////////////////////////////////////////
    class A:base{
    public:
    	A(int x): x_(x){}
      push        ebp        сюда прыгнули из кон-ра с двумя аргументами   
      mov         ebp,esp 
      sub         esp,44h 
      push        ebx  
      push        esi  
      push        edi  
      mov         dword ptr [ebp-4],ecx 
      mov         ecx,dword ptr [this] 
      call        base::base (42B8F7h)   снова создаем базовые классы 
      mov         eax,dword ptr [this]   ПОВТОРНО как минимум утечка памяти
      mov         ecx,dword ptr [x] 
      mov         dword ptr [eax],ecx 
      mov         eax,dword ptr [this] 
      pop         edi  
      pop         esi  
      pop         ebx  
      mov         esp,ebp 
      pop         ebp  
      ret         4    возвращаемся
    --- No source file -------------------------------------------------------------
    /////////////////////////////////////////////////////////////////////////
    
     
    #5810 greki_hoy, 18 Nov 2010
    Last edited: 19 Nov 2010
  11. cupper

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    GRRRL Power спасибо
    greki_hoy ну ты загнул :)
     
  12. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Code:
    int aaa, bbb;
    	_asm
    	{
    		mov bbb,4;
    		mov aaa,bbb;
    	}
    Никак не пойму что не так.
    Пишет ошибку:
    error C2415: недопустимый тип операнда
     
  13. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Команда mov может данные перемещать только из памяти в регистр, из регистра в память и из регистра в регистр. Из памяти в память не может.

    Code:
    int aaa, bbb;
    	_asm
    	{
    		mov bbb,4;
                    mov eax,bbb;
    		mov aaa,eax;
    	}
     
    1 person likes this.
  14. AtomoS

    AtomoS New Member

    Joined:
    17 Feb 2010
    Messages:
    88
    Likes Received:
    1
    Reputations:
    0
    вопрос пока на уровне теории.

    возможно ли написать модуль к Apache на C, файл mod_page.so к примеру, который будет отображать результат скрипта php:
    при запросе к адресу http://localhost/hello_world.php ?
    фактически файла hello_world.php существовать не будет.
     
    #5814 AtomoS, 22 Nov 2010
    Last edited: 22 Nov 2010
  15. cupper

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

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    Топчусь уже пару дней на одно месте не могу сдвинуться.
    Что нужно для того чтобы в Linux g++работать с mysql ?

    Я из репозитария установил сервер и клиент. Далее пошол в документацию
    http://dev.mysql.com/doc/refman/5.1/en/connector-cpp.html
    там скачал драйвер а что с ним делать дальше не как не пойму, толи его нужно рассовать по системным папкам толи в проекте держать... не как не разберусь :(

    PS. Или с помощью чего лучше организовать работу с mysql из С++ (на лине)?
     
    #5815 cupper, 22 Nov 2010
    Last edited: 22 Nov 2010
  16. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Может сперва научиться пользоваться поиском ?
    Первая ссылка гугла по рэквесту: linux c++ mysql example
    _http://softexpert.wordpress.com/2007/10/18/how-to-connect-to-a-mysql-db-using-c-linux/
     
  17. Gin

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

    Joined:
    11 Sep 2008
    Messages:
    133
    Likes Received:
    7
    Reputations:
    4
    Я создал пару классов с которыми постонно работаю, но каждый раз когда хочу протестировать пару фич постоянно приходится подключать все заново. Вопрос можно ли как то автоматизировать процесс, т.е. сделать что-то типа шаблонов т.е щелкнул и уже пустой проект создан с нужным мне набором классов и библиотек (использую VS2010) :?
     
  18. edge911

    edge911 Active Member

    Joined:
    21 Feb 2009
    Messages:
    105
    Likes Received:
    142
    Reputations:
    15
    char szRecvBuff[1024];
    MessageBoxW(0,szRecvBuff,L"recive data",0);
    MessageBoxA(0,szRecvBuff,L"recive data",0);
    MessageBox(0,szRecvBuff,L"recive data",0);

    как прально писать, чтобы не:
    Error 3 error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [1024]' to 'LPCWSTR' k:\cproject\tcpclient\tcpclient\tcpclient.cpp 273 TCPClient

    P.S msvs 2008
     
    #5818 edge911, 23 Nov 2010
    Last edited: 23 Nov 2010
  19. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Я отвечаю на такое уже третий раз как минимум...

    https://forum.antichat.ru/showpost.php?p=2314930&postcount=5631

    Подозреваю, что в этом случае нужно отобразить именно массив char, тогда следует использовать ANSI-функцию MessageBoxA.

    PHP:
    MessageBoxA(0szRecvBuff"received data"0);
    И отучайтесь от венгерской нотации.
     
    #5819 GRRRL Power, 23 Nov 2010
    Last edited: 23 Nov 2010
    1 person likes this.
  20. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    А чем плоха Венгерская нотация?
     
Thread Status:
Not open for further replies.