[ 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. GRRRL Power

    GRRRL Power Moderator

    Joined:
    13 Jul 2010
    Messages:
    827
    Likes Received:
    184
    Reputations:
    84
    Вижуал студия запускает через заранее подготовленную консоль, если жать Ctrl+F5
     
    _________________________
    1 person likes this.
  2. Andrushka25

    Andrushka25 New Member

    Joined:
    19 Jul 2010
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    мой ранее вопрос
    Я розобрался почему не работает! Все дело в stdafx.h!
    Т.е. когда я создаю консольное приложение win32, все работает! А когда создаю пустой проект работать отказывается! Почему SetConsoleTitle зависит от библиотеки stdafx.h?

    p.s. Компилятор VS 2008
     
  3. GRRRL Power

    GRRRL Power Moderator

    Joined:
    13 Jul 2010
    Messages:
    827
    Likes Received:
    184
    Reputations:
    84
    stdafx это просто хрень для предкомпилированных заголовков, от нее вряд ли может зависеть работа программы. Просто всегда надо консольное приложение создавать, а с предкомпилированными заголовками или без - уже без разницы.
     
    _________________________
  4. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Всем привет. Подскажите, пожалуйста, почему не биндит порт? Выдает ошибку 10049.
    Code:
    #include <iostream>
    #include <winsock2.h>
    
    using namespace std;
    char buf[128];
    int main()
    {
    WSADATA wd;
    WSAStartup(MAKEWORD(2,2), &wd);
    int sock;
    int FuncRes;
    struct sockaddr_in addr;
    struct hostent *h;
      if(gethostname(&buf[0], 128) == 0) {
        h = gethostbyname(&buf[0]);
          if(h != NULL)    {
            MessageBox(0,inet_ntoa (*(reinterpret_cast<in_addr *>(*(h->h_addr_list)))),0,0);
          }
          else     {
            MessageBox(0,"Вы не в сети. И IP адреса у вас нет.",0,0);
          }
      }
    addr.sin_addr.s_addr = (unsigned long) h->h_addr;
    sock = socket(AF_INET, SOCK_STREAM, 0);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(5678);
    FuncRes = bind(sock, (sockaddr *)&addr, sizeof(addr));
      if(FuncRes == SOCKET_ERROR) {
        wprintf(L"bind failed with error %u\n", WSAGetLastError());
        closesocket(sock);
        WSACleanup();
        return 1;
      }
      else {
        wprintf(L"Bind successfull");
      }
    return 0;
    }
    
     
  5. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    944
    Likes Received:
    427
    Reputations:
    139
    Code:
    addr.sin_addr.s_addr = (unsigned long) h->h_addr;
    замени на

    Code:
    ((unsigned long *)&addr.sin_addr)[0]= ((unsigned long **)h->h_addr_list)[0][0];
    и кури "Учитель игры на WinSocks".
     
  6. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    148
    Likes Received:
    8
    Reputations:
    -2
    C++ Builder Indy - проблемы с кодировкой.

    Подскажите пожалуйста, как получить страницу в правильной кодировке? не получается ну никак!

    Код такой:
    IdHTTP1->Request->CharSet = "windows-1251";
    IdHTTP1->Response->CharSet = "windows-1251";
    Memo1->Text=IdHTTP1->Get("http://forum.mybb.ru/misc.php");

    Я пробовал все эти варианты
    IdHTTP1->Request->AcceptCharSet="windows-1251;utf-8";
    IdHTTP1->Request->AcceptLanguage="ru-ru,ru";
    IdHTTP1->Response->CharSet = "windows-1251";

    все равно приходит черт его знает какая кодировка. Или у меня Инди глючит, или я что-то не знаю..
     
  7. Киев

    Киев Banned

    Joined:
    9 Aug 2011
    Messages:
    19
    Likes Received:
    8
    Reputations:
    4
    Есть два файла file1, file2
    На выходе нужно получить данные file1 без file2 (построчное сравнение)

    Подскажите как, а то через потоки как то криво получается, медленно...
     
  8. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    231
    Likes Received:
    11
    Reputations:
    4
    попробуй вместо потоков использовать стандартный сишные функции для работы с файлами:
    напиши функцию поиска строки в файле:
    PHP:
    bool fcontains(char *fname,char *s)
    {
    FILE *f=fopen(fname,"r");
    while(!
    feof(f))
    {
    char str[255];
    if( 
    fgets(str,256,f)!=NULL && strcmp(str,s)==) return true;//строка есть в файле
    }
    return 
    false;//строку так и не нашли
    }
    и со второго файла читай строки и проверяй наличие их во втором файле:
    PHP:
    FILE *fp=fopen("file1","r");
    while(!
    feof(fp))
    {
    char str[255];
    if(
    fread(str,256,fp)!=NULL && !fcontains("file2",str)) printf("%s\n",str);
    }
    правда для больших файлов будет долго проверяться, т.к. оно проходиться по второму файлу n раз, где n==кол-во строк в первом файле
     
  9. Richard

    Richard Member

    Joined:
    2 Dec 2008
    Messages:
    42
    Likes Received:
    7
    Reputations:
    1
    Visual C++ 2010
    Приложение Windows Forms

    Как измерить время выполнения определённого куска кода (в милисекундах)?

    Функции getTime и getTickTime пробовал, но не , какие-то неясные ошибки в MMsystem.h

    Код с использованием windows.h и метода clock() компилируется, но почему-то на выходе таймер всегда равен нулю.
    Code:
    clock_t time = clock();											
    simMeth1 = FirstSum.GetSimple();				// Вычисления	
    time = clock() - time;									
    simTime1 = (double) time/CLOCKS_PER_SEC;
    
    ставил даже большой цикл между time=clock() и time = clock()-time;
    всё равно ноль.

    Спасибо.

    Разобрался сам: при использовании функции clock() результат был равен нулю, т.к. время выполнения было очень маленьким. Вызывал time = clock(), прогонял алгоритм около 10кк раз (потому что он маленький), и брал time = clock() - time. Время выполнения получается отличным от нуля. Остаётся только поделить на кол-во итераций (10кк), помноженные на кол-во тиков, для получения результата в секундах
     
    #6949 Richard, 18 Jan 2012
    Last edited: 22 Jan 2012
    1 person likes this.
  10. 1NtR0

    1NtR0 Elder - Старейшина

    Joined:
    14 Apr 2007
    Messages:
    276
    Likes Received:
    89
    Reputations:
    35
    Подскажите плз как в цикле сделать strcat
    Code:
    #include <iostream>
    #include <stdio.h>
    #include <vector>
    #include <string.h>
    
    using namespace std;
    
    int main() {
        vector<char> my;
        char out[255]="";
        for(char a='a';a<='z';a++) {
            my.push_back(a);
        }
    
        for(int i=0;i<=my.size();i++) {
            strcat(out, my[i]);
        }
    
        return 0;
    
    }
    
    
     
  11. cramp

    cramp New Member

    Joined:
    10 Jan 2012
    Messages:
    20
    Likes Received:
    3
    Reputations:
    0
    Code:
    int main()
    {
        vector<char> my;
        char out[255]="";
        for(char a='a';a<='z';a++) {
            my.push_back(a);
        }
    
           strcat(out, &my[0]);
           out[my.size()]= 0;
     
    
        return 0;
    
    
    }
    strcat добавляет к одной строке(out) другую, от начала до символа \0, следовательно цикл for не нужен, достаточно передать в strcat указатель на первый символ строки my (&my[0])
    Потом следует завершить строку (поставить в конец символ 0)
     
    1 person likes this.
  12. DooD

    DooD Moderator

    Joined:
    30 Sep 2010
    Messages:
    1,181
    Likes Received:
    420
    Reputations:
    288
    Как сделать что бы компиль понимал просто вызов,типа MessageBox.А то понимает только MessageBoxA. MSVS2010 Express.
    и если не сложно дайте пример создания контрола с обработкой события(чистый си).спасибо.
     
    _________________________
    #6952 DooD, 22 Jan 2012
    Last edited: 22 Jan 2012
  13. cramp

    cramp New Member

    Joined:
    10 Jan 2012
    Messages:
    20
    Likes Received:
    3
    Reputations:
    0
    а зачем? работаешь в кодировке ANSI - вызывай MessageBoxA, если в юникоде - MessageBoxW
     
  14. DooD

    DooD Moderator

    Joined:
    30 Sep 2010
    Messages:
    1,181
    Likes Received:
    420
    Reputations:
    288
    это не совсем удобно для меня.как насчет второго вопроса?
     
    _________________________
  15. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    627
    Likes Received:
    61
    Reputations:
    53
    сколько времени требуется на изучение плюсов?
     
  16. DooD

    DooD Moderator

    Joined:
    30 Sep 2010
    Messages:
    1,181
    Likes Received:
    420
    Reputations:
    288
    чет не догоняю.надо заставить работать это
    Code:
    #include <windows.h>
    
    LRESULT CALLBACK MainWinProc(HWND,UINT,WPARAM,LPARAM);
    #define ID_MYBUTTON 1   
    HWND hMainWnd;
    MSG msg;
    int ss;
    HINSTANCE hInst;
    
    int WINAPI WinMain(hInst,HINSTANCE,LPSTR, ss)
    {
    
     WNDCLASS wc;
     wc.style=0;
     wc.lpfnWndProc=MainWinProc;
     wc.cbClsExtra=wc.cbWndExtra=0;
     wc.hInstance=hInst;
     wc.hIcon=NULL;
     wc.hCursor=NULL;
     wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
     wc.lpszMenuName=NULL;
     wc.lpszClassName="Example 4 MainWnd Class";
     if (!RegisterClass(&wc)) return FALSE;
    
     
      hMainWnd=CreateWindow("Example 4 MainWnd Class","EXAMPLE 4",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInst,NULL);
     if (!hMainWnd) return FALSE;
     ShowWindow(hMainWnd,ss);
     UpdateWindow(hMainWnd);
     
     while (GetMessage(&msg,NULL,0,0)) {
      TranslateMessage(&msg); 
      DispatchMessage(&msg); 
     } 
     return msg.wParam; 
    }
    
    
    LRESULT CALLBACK MainWinProc(HWND hw,UINT msg,WPARAM wp,LPARAM lp) {
     switch (msg) {
      case WM_CREATE:
    
       CreateWindow("button","My button",WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
        5,5,100,20,hw,(HMENU)ID_MYBUTTON,NULL,NULL);
       return 0;
      case WM_COMMAND:
      
       if ((HIWORD(wp)==0) && (LOWORD(wp)==ID_MYBUTTON)) 
        MessageBox(hw,"You pressed my button","MessageBox",MB_OK|MB_ICONWARNING);
       return 0;
      case WM_DESTROY:
     
       PostQuitMessage(0);
       return 0;
     }
     return DefWindowProc(hw,msg,wp,lp);
    }
    создается просто окно с кракозябрами в заголовке.все.ни батона ни хера нету.
     
    _________________________
  17. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,937
    Likes Received:
    804
    Reputations:
    224
    Нафига глобальные переменные создавать? В приведенном варианте лично у меня пример даже не копилируется. Хотя если немного поправить немного аргументы WinMain, то окно появляется с кнопкой.
     
  18. DooD

    DooD Moderator

    Joined:
    30 Sep 2010
    Messages:
    1,181
    Likes Received:
    420
    Reputations:
    288
    если задавать типа hwnd hMainWnd=createwindow, то у меня не компилится. буду благодарен за рабочий пример.
     
    _________________________
  19. GRRRL Power

    GRRRL Power Moderator

    Joined:
    13 Jul 2010
    Messages:
    827
    Likes Received:
    184
    Reputations:
    84
    Тут вопрос в другом.
    У тебя в принципе не скомпилится вот эта строка:
    Code:
    int WINAPI WinMain(hInst,HINSTANCE,LPSTR, ss)
    
     
    _________________________
  20. DooD

    DooD Moderator

    Joined:
    30 Sep 2010
    Messages:
    1,181
    Likes Received:
    420
    Reputations:
    288
    оно то компилится,как я уже выше описал,выходит окно без кнопки.и еще выше я писал,что если использовать префиксы в функциях,например CreateWindowA то оно и с кнопкой появляется,только вот обработчик кнопки не пашет и мессага не появляется.а в чем проблема то я понять не могу.
     
    _________________________
Loading...
Thread Status:
Not open for further replies.