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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Satell, 8 авг 2007.

  1. Satell

    Satell Гость

    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. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    1. Синтаксис вроде нормальный. Что за ошибка?
    2. SHGetFolderLocation, SHGetFolderPath, SHGetSpecialFolderLocation, SHGetSpecialFolderPath. CSIDL = CSIDL_COOKIES.
    3. Ну самый очевидный способ решения, это взять хэндл окна консоли и по нему спрятать окно. А вообще, зачем делать консольное приложение если окно не нужно? Может проще сделать Win32 приложение без окна?
     
  3. Satell

    Satell Гость

    странно, но при всех вариантах что мне дали программа аварийно завершается...

    //вариант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]
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Воспользуйся отладкой и определи, какая команда вызывает завершение работы. Приведенный тобой код вполне адекватен
     
  5. SunSanych

    SunSanych Well-Known Member

    Регистрация:
    28 июн 2006
    Сообщения:
    71
    Симпатии:
    0
    Судя по названию переменных этот код используется в теле цикла. И предпологаю, что не все элементы массива array заполнены верными указателями, а все функции для работы со строками обычно это дело пытаются по мере сил отследить. Например они заругаются, если один из параметров равен 0х00000000.

    Для прохода по всему массиву код должен быть примерно такой:
    Код (Text):
    char setpath[300];

    for(j=0; j<ARRAY_SIZE; j++)
    {
    [indent]setpath[0] = 0;[/indent]
    [indent]if( !array([j] ) break;[/indent]

    [indent]wsprintf(setpath, "http://%s", array[j]);[/indent]
    [indent]//работаем c setpath[/indent]
    }
    Чёго-то не то получилось с форматированием :) , попробую еще раз:

    Код (Text):
    char setpath[300];

    for(j=0; j<ARRAY_SIZE; j++)
    {
    setpath[0] = 0;
    if( !array[j] ) break;

    wsprintf(setpath, "http://%s", array[j]);
    //работаем c setpath
    }
    P.S. Если нулевой указатель может встречатся в масиве где угодно, а не только как завершающий элемент, то break надо заменить на continue.
     
  6. Satell

    Satell Гость

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

    Код (Text):
    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);


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

    Satell Гость

    можно ли сделать таймер в консольном приложении??
    так не работает

    Код (Text):
    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);
     
  8. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Поставь студию посвежее, 2003 хотя бы
     
  9. Satell

    Satell Гость

    в 2005й студии shfolder.h есть но при компиляции выдает кучу ошибок именно в shfolder.h
     
  10. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Телепаты в отпуске и выражение "при компиляции выдает кучу ошибок" ничего не говорит
     
  11. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    вижу.. вижу... что плохая карма у тебя внучек... хидер виндовс не подключеный довлеет над тобой =)
     
  12. HECSH716

    HECSH716 Гость

    :D прошу помощи. подскажите как на Це++ билдере реализовать процедуру запуска EXE'шника если путь к этому файлу будет указан в TextBox'е ЗАРАНИЕ БЛАГОДАРЮ! ...
     
Загрузка...

Поделиться этой страницей