Сложение строк, путь кук, консоль

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Satell, 8 Aug 2007.

  1. Satell

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

    Joined:
    13 Jan 2007
    Messages:
    91
    Likes Received:
    5
    Reputations:
    1
    1. есть динамический массив char** array; куда записываются строки из файла ф-ей getline
    имеющие вид www.adres.com, нужно прибавить к этим строкам http:// в начале

    такая конструкция выдаёт ошибку при запуске приложения, как сделать правильно?
    char* setpath;
    char setpath2[300];

    setpath="http://";
    strcpy(setpath2,array[j]);
    strcat(setpath,setpath2);

    2. есть ли функция для определения пути директории с куками или имени компьютера, т.к. он от него зависит

    C:\Documents and Settings\compname\Cookies\compname@www.adres[1].txt

    3. есть консольное приложение Visual studio VC++ 5, как сделать его вообще чтобы никакого окна небыло?
     
  2. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    1) поиском пользуйся, 101 пример есть.
    2) GetComputerName() - имя компьютера.
    3) Если тебе не нужно окно, не легче сделать win32 приложение?
     
  3. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    1. Сделай проще:
    2. Тебе нужно не имя компьютера, а имя учётной записи, в чьи кукисы ты хочешь залезть. Для текущей учётной записи можно использовать:
    3. Создай win32 приложение со скрытым окном... создай win32 приложение, там порождай функциональный процесс... Вариантов куча...
     
  4. Satell

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

    Joined:
    13 Jan 2007
    Messages:
    91
    Likes Received:
    5
    Reputations:
    1
    странно, но при всех вариантах что мне дали программа аварийно завершается...

    //вариант1
    char setpath[]="http://";
    char* tmp=new char[800];
    tmp[0]=0;

    strcpy(tmp,setpath);
    strcat(tmp,"www.google.com");


    //вариант2
    char* setpath;
    char* setaddr;
    char setpath2[300];

    setpath="http://";
    setaddr="www.google.com";
    sprintf (setpath2,"%s%s",setpath,setaddr);

    //вариант3
    char setpath[300] = {0};
    wsprintf(setpath, "http://%s", array[j]); // Строка будет вида http://+содержимое array[j]
     
  5. NetMan

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

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    Satell, всё пашет. Вот, например, проверь так:
    Code:
    #include <iostream.h>
    #include <string.h>
    
    int main()
    {
    	char setpath[]="http://";
    	char* tmp=new char[800];
    	
    	strcpy(tmp,setpath);
    	strcat(tmp,"www.google.com");
    	cout << "tmp=" << tmp;
    
    	delete tmp;
    	return 0;
    }
     
    1 person likes this.
  6. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Satell, как сказал бы один талантливый кодер на букву "Г", не подумайте плохого, я про Грейта... :) Так вот он бы сказал "Трассировка!!!"... И был бы прав! Я уверен что прога у тебя вылетает в другом месте, потому что все из приведённых способов рабочие... Прогони в дебагере и ты чётко увидешь на каком месте он сыплется...
     
  7. _Great_

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

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Ай, ой меня тут вспомнили.
    Дада, именно так бы и сказал. Отладчик видно не для него придумали
     
  8. Satell

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

    Joined:
    13 Jan 2007
    Messages:
    91
    Likes Received:
    5
    Reputations:
    1
    А как отладчик использовать, он то что в вижл студио там на ассемблере показывает, код отдельно работает, а в моей проге вылетает, причем что интересно инструкции после кода точно выполняются, происходит вывод, если их закомментить, то все работает
    strcpy(tmp,setpath);
    strcat(tmp,"www.google.com");
     
  9. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    а по русски написать можешь? видимо ты не умеешь работать с отладчиком.
     
  10. GoreMaster

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

    Joined:
    28 May 2007
    Messages:
    119
    Likes Received:
    32
    Reputations:
    4
    ТС залей-ка скомпиленную прогу.
    Для дебага ставь бряк на ExitProcess и дальше смотри откуда произошел вызов...
     
    #10 GoreMaster, 8 Aug 2007
    Last edited: 8 Aug 2007
  11. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Исходники в студию, или это обсуждение будет до бесконечности...
     
  12. Satell

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

    Joined:
    13 Jan 2007
    Messages:
    91
    Likes Received:
    5
    Reputations:
    1
    вроде сделал, глючный какой-то этот vc++, вообще не понятно из-за чего вылетает программа, убрал просто один внешний цикл for(int i=0; i<1; i++) в котором ничего и не происходило и заработало
    имя компьютера тоже определяется только со второго раза почему-то, при первом вызове всегда hui будет

    Code:
    char buffer5[256];		
    DWORD size5;			
    if (GetUserName(buffer5,&size5)!=0)		
    {
    puts(buffer5);
    }
    else
    {
    puts("hui");
    }
    
    как найти путь к папке с куками, такая штука не работает, т.к. не находит заголовочный файл shfolder.h, visual studio 5, windows xp

    #include <shfolder.h>
    TCHAR path[MAX_PATH_SIZE];
    SHGetSpecialFolderPath(0, path, CSIDL_COOKIES, FALSE);


    как использовать встроенный отладчик, если в ассемблерных кодах ничего не понятно?
     
  13. Satell

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

    Joined:
    13 Jan 2007
    Messages:
    91
    Likes Received:
    5
    Reputations:
    1
    можно ли сделать таймер в консольном приложении??
    так не работает

    Code:
    int CALLBACK TimerProc(void)
    {
        MessageBox(NULL,"Timer","Timer",MB_OK);
    	puts("timer");
    	return 0;
    }
    
    int timerID=SetTimer(NULL,0,1000,&TimerProc);
    while(1)
        {
            Sleep(10000);
    		break;
        }
    KillTimer(0,timerID);