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

  • Автор темы Satell
  • Дата начала
S

Satell

Гость
#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, как сделать его вообще чтобы никакого окна небыло?
 
04.09.2006
2 566
2
Минск
#2
1. Синтаксис вроде нормальный. Что за ошибка?
2. SHGetFolderLocation, SHGetFolderPath, SHGetSpecialFolderLocation, SHGetSpecialFolderPath. CSIDL = CSIDL_COOKIES.
3. Ну самый очевидный способ решения, это взять хэндл окна консоли и по нему спрятать окно. А вообще, зачем делать консольное приложение если окно не нужно? Может проще сделать Win32 приложение без окна?
 
S

Satell

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

//вариант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]
 
04.09.2006
2 566
2
Минск
#4
Воспользуйся отладкой и определи, какая команда вызывает завершение работы. Приведенный тобой код вполне адекватен
 

SunSanych

Well-Known Member
28.06.2006
71
0
#5
Судя по названию переменных этот код используется в теле цикла. И предпологаю, что не все элементы массива array заполнены верными указателями, а все функции для работы со строками обычно это дело пытаются по мере сил отследить. Например они заругаются, если один из параметров равен 0х00000000.

Для прохода по всему массиву код должен быть примерно такой:
Код:
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]
}
Чёго-то не то получилось с форматированием :) , попробую еще раз:

Код:
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.
 
S

Satell

Гость
#6
вроде сделал, глючный какой-то этот 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);


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

Satell

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

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

Satell

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

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#11
вижу.. вижу... что плохая карма у тебя внучек... хидер виндовс не подключеный довлеет над тобой =)
 
H

HECSH716

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