PDA

Просмотр полной версии : Сложение строк, путь кук, консоль


Satell
08.08.2007, 13:17
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, как сделать его вообще чтобы никакого окна небыло?

Ni0x
08.08.2007, 13:43
1) поиском пользуйся, 101 пример есть.
2) GetComputerName() - имя компьютера.
3) Если тебе не нужно окно, не легче сделать win32 приложение?

groundhog
08.08.2007, 13:46
1. Сделай проще:
char setpath[300] = {0};

wsprintf(setpath, "http://%s", array[j]); // Строка будет вида http://+содержимое array[j]

2. Тебе нужно не имя компьютера, а имя учётной записи, в чьи кукисы ты хочешь залезть. Для текущей учётной записи можно использовать:
BOOL GetUserName(
// address of name buffer
LPTSTR lpBuffer,
// address of size of name buffer
LPDWORD nSize
);

3. Создай win32 приложение со скрытым окном... создай win32 приложение, там порождай функциональный процесс... Вариантов куча...

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

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

NetMan
08.08.2007, 19:31
Satell, всё пашет. Вот, например, проверь так:
#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;
}

groundhog
08.08.2007, 21:34
Satell, как сказал бы один талантливый кодер на букву "Г", не подумайте плохого, я про Грейта... :) Так вот он бы сказал "Трассировка!!!"... И был бы прав! Я уверен что прога у тебя вылетает в другом месте, потому что все из приведённых способов рабочие... Прогони в дебагере и ты чётко увидешь на каком месте он сыплется...

_Great_
08.08.2007, 21:49
Satell, как сказал бы один талантливый кодер на букву "Г", не подумайте плохого, я про Грейта... :) Так вот он бы сказал "Трассировка!!!"... И был бы прав! Я уверен что прога у тебя вылетает в другом месте, потому что все из приведённых способов рабочие... Прогони в дебагере и ты чётко увидешь на каком месте он сыплется...
Ай, ой меня тут вспомнили.
Дада, именно так бы и сказал. Отладчик видно не для него придумали

Satell
08.08.2007, 22:09
А как отладчик использовать, он то что в вижл студио там на ассемблере показывает, код отдельно работает, а в моей проге вылетает, причем что интересно инструкции после кода точно выполняются, происходит вывод, если их закомментить, то все работает
strcpy(tmp,setpath);
strcat(tmp,"www.google.com");

Ni0x
08.08.2007, 22:17
а по русски написать можешь? видимо ты не умеешь работать с отладчиком.

GoreMaster
08.08.2007, 22:22
ТС залей-ка скомпиленную прогу.
Для дебага ставь бряк на ExitProcess и дальше смотри откуда произошел вызов...

groundhog
09.08.2007, 10:24
Исходники в студию, или это обсуждение будет до бесконечности...

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


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);


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

Satell
11.08.2007, 18:30
можно ли сделать таймер в консольном приложении??
так не работает


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);