Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сложение массивов char

5.3K
08 августа 2007 года
NewGP
58 / / 17.09.2006
допустим есть такие переменные:
char A[MAX_PATH];
char B[MAX_PATH];

в B походу работы проги заносится путь.
нужно сделать вот что:
А=В+"\test.exe";
компиллер выдает ошибку. сам кодил на паскале,там юзал строки,как тоже самое сделать в с++ не знаю.
3
08 августа 2007 года
Green
4.8K / / 20.01.2000
Цитата: NewGP

сам кодил на паскале,там юзал строки,как тоже самое сделать в с++ не знаю.


Так используй строки и в С++ std::string.

Что же касается C-string, то здесь используй strcat, но тебе придется проверять размеры, чтоб не вылезти за пределы массива.

12K
08 августа 2007 года
__AleXX__
133 / / 02.04.2007
попробуй так:

strcpy(A,B);
strcat(A,"\test.exe");

В с++ это два массива, а они не складываются.
Можно еще юзать строки, класс std::string,

#include <iostream>

std::string B;
B.append("\\test.exe");

И будет тебе в B все, че надо :))
5.3K
08 августа 2007 года
NewGP
58 / / 17.09.2006
а если мне не охото подключать эти модули??? мне нужен очень маленький размер.
4.8K
08 августа 2007 года
fakel15
54 / / 02.12.2005
Попробуй использовать функцию strcat.
char* strcat(char* s1, const char* s2).
к s1 присоединяется s2. Но учти, что в данном случае динамическая память автоматически не выделяется... и поэтому в s1 места должно быть достаточно!!!
(соответственно код немного поменять нужно будет)
4.8K
08 августа 2007 года
fakel15
54 / / 02.12.2005
:)... меня уже опередили....
5.3K
08 августа 2007 года
NewGP
58 / / 17.09.2006
Цитата: __AleXX__
попробуй так:

strcpy(A,B);
strcat(A,"\test.exe");



выводит путь,потом 7-8 пробелов и est.exe...
вместо путь\test.exe

12K
08 августа 2007 года
__AleXX__
133 / / 02.04.2007
Цитата: NewGP
выводит путь,потом 7-8 пробелов и est.exe...
вместо путь\test.exe





попробуй:
strcat(A,"\\test.exe");

во втором примере правильно написал, а в этом забыл.

\ - служебный символ, \t - получилась табуляция :))

4.8K
08 августа 2007 года
fakel15
54 / / 02.12.2005
или так....
char A[MAX_PATH];
char * B = new char;
B="c:\\conf";
strcpy(A,B);
strcat(A,"\\test.exe");
....
тогда A=c:\conf\test.exe
(просто лишние компоненты из B в А копироваться не будут)
5.3K
08 августа 2007 года
NewGP
58 / / 17.09.2006
Цитата: __AleXX__
попробуй:
strcat(A,"\\test.exe");

во втором примере правильно написал, а в этом забыл.

\ - служебный символ, \t - получилась табуляция :))



огромное спасибо!))

12K
08 августа 2007 года
__AleXX__
133 / / 02.04.2007
Цитата: fakel15
или так....
char A[MAX_PATH];
char * B = new char;
B="c:\\conf";
....



А как это ты выделяешь память под один char, а записываешь туда адрес строки "c:\\conf" ?

4.8K
08 августа 2007 года
fakel15
54 / / 02.12.2005
по сути строка - есть массив символов, заканчивающийся нулем, а имя этого массива - это адрес его первого элемента (чем непосредственно char * и является). Тогда создавая char указатель, мы туда можем поместить стороку (типа динамический массив). (Признаю... метод так себе, но консольный Visual C++'шный компилятор с такими кодами справляется на ура)
4.8K
08 августа 2007 года
fakel15
54 / / 02.12.2005
Для подстраховки лучще так.
char * B = new char[MAX_PATH];
240
08 августа 2007 года
aks
2.5K / / 14.07.2006
fakel15
Почитай для общего развития тему:
http://forum.codenet.ru/showthread.php?t=40638

Полностью.
Как раз на днях Green там полезные вещи объяснял, которые помогут пониманию понятий массив/указатель. ))
4.8K
08 августа 2007 года
fakel15
54 / / 02.12.2005
Спасибо...
Обязательно прочту.
309
08 августа 2007 года
el scorpio
1.1K / / 19.09.2006
А лучше всего - классы-контейнеры. string, CString (MS), AnsiString (Borland) - смотря на каком диалекте писать.
У начинающих больше всего проблем с указателями на char...
350
11 августа 2007 года
cheburator
589 / / 01.06.2006
Касательно того, что "я не хочу подключать библиотеки, чтобы размер программы получился поменьше".
Наподключать можно что угодно, при связывании (link) в исполняемый файл войдут лишь те функции, что реально используются в твоей программе, не обязательно вся библиотека.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог