сложение массивов char
char A[MAX_PATH];
char B[MAX_PATH];
в B походу работы проги заносится путь.
нужно сделать вот что:
А=В+"\test.exe";
компиллер выдает ошибку. сам кодил на паскале,там юзал строки,как тоже самое сделать в с++ не знаю.
Цитата: NewGP
сам кодил на паскале,там юзал строки,как тоже самое сделать в с++ не знаю.
Так используй строки и в С++ std::string.
Что же касается C-string, то здесь используй strcat, но тебе придется проверять размеры, чтоб не вылезти за пределы массива.
strcpy(A,B);
strcat(A,"\test.exe");
В с++ это два массива, а они не складываются.
Можно еще юзать строки, класс std::string,
#include <iostream>
std::string B;
B.append("\\test.exe");
И будет тебе в B все, че надо :))
а если мне не охото подключать эти модули??? мне нужен очень маленький размер.
char* strcat(char* s1, const char* s2).
к s1 присоединяется s2. Но учти, что в данном случае динамическая память автоматически не выделяется... и поэтому в s1 места должно быть достаточно!!!
(соответственно код немного поменять нужно будет)
:)... меня уже опередили....
Цитата: __AleXX__
попробуй так:
strcpy(A,B);
strcat(A,"\test.exe");
strcpy(A,B);
strcat(A,"\test.exe");
выводит путь,потом 7-8 пробелов и est.exe...
вместо путь\test.exe
Цитата: NewGP
выводит путь,потом 7-8 пробелов и est.exe...
вместо путь\test.exe
вместо путь\test.exe
попробуй:
strcat(A,"\\test.exe");
во втором примере правильно написал, а в этом забыл.
\ - служебный символ, \t - получилась табуляция :))
char A[MAX_PATH];
char * B = new char;
B="c:\\conf";
strcpy(A,B);
strcat(A,"\\test.exe");
....
тогда A=c:\conf\test.exe
(просто лишние компоненты из B в А копироваться не будут)
Цитата: __AleXX__
попробуй:
strcat(A,"\\test.exe");
во втором примере правильно написал, а в этом забыл.
\ - служебный символ, \t - получилась табуляция :))
strcat(A,"\\test.exe");
во втором примере правильно написал, а в этом забыл.
\ - служебный символ, \t - получилась табуляция :))
огромное спасибо!))
Цитата: fakel15
или так....
char A[MAX_PATH];
char * B = new char;
B="c:\\conf";
....
char A[MAX_PATH];
char * B = new char;
B="c:\\conf";
....
А как это ты выделяешь память под один char, а записываешь туда адрес строки "c:\\conf" ?
по сути строка - есть массив символов, заканчивающийся нулем, а имя этого массива - это адрес его первого элемента (чем непосредственно char * и является). Тогда создавая char указатель, мы туда можем поместить стороку (типа динамический массив). (Признаю... метод так себе, но консольный Visual C++'шный компилятор с такими кодами справляется на ура)
char * B = new char[MAX_PATH];
Почитай для общего развития тему:
http://forum.codenet.ru/showthread.php?t=40638
Полностью.
Как раз на днях Green там полезные вещи объяснял, которые помогут пониманию понятий массив/указатель. ))
Обязательно прочту.
У начинающих больше всего проблем с указателями на char...
Наподключать можно что угодно, при связывании (link) в исполняемый файл войдут лишь те функции, что реально используются в твоей программе, не обязательно вся библиотека.