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

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

  1. Satell

    Satell Гость

    Репутация:
    0
    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

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

    Satell Гость

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

    //вариант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

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

    SunSanych Well-Known Member

    Репутация:
    0
    Регистрация:
    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 Гость

    Репутация:
    0
    вроде сделал, глючный какой-то этот 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 Гость

    Репутация:
    0
    можно ли сделать таймер в консольном приложении??
    так не работает

    Код (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

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

    Satell Гость

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

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

    Kmet Well-Known Member
    Java Team

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

    HECSH716 Гость

    Репутация:
    0
    :D прошу помощи. подскажите как на Це++ билдере реализовать процедуру запуска EXE'шника если путь к этому файлу будет указан в TextBox'е ЗАРАНИЕ БЛАГОДАРЮ! ...
     
Загрузка...
Похожие Темы - Сложение строк путь
  1. sanot
    Ответов:
    0
    Просмотров:
    1.453
  2. Vunderkind
    Ответов:
    2
    Просмотров:
    3.231
  3. basheer
    Ответов:
    7
    Просмотров:
    158
  4. Серега_123
    Ответов:
    0
    Просмотров:
    155
  5. ramrem
    Ответов:
    3
    Просмотров:
    203

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