char 10



Автор Кафыв вафыаы задал вопрос в разделе Другие языки и технологии

КАК ПОМЕСТИТЬ НУЛЕВОЙ СИМВОЛ В КОНЕЦ СТРОКИ С++ КАК char* str1 = new char [10]; str1 = "ABCD"; и получил лучший ответ

Ответ от
str1[4] = '';

Ответ от ...[гуру]
char* str1 = new char [10];
ОК. Вы веделили память
str1 = "ABCD"
А теперь str1 уже не указывает на выделенную память, а на начало строки ABCD, и получается утечка памяти.
Более того ABCD при такой записи уже содержит 0 терминатор.
Легко убедиться:
char *s1 = new char[10];
char *s2 = s1; //Запоминаем s1 в s2
s1 = "ABCD"; //Здесь кст можете получить предупреждение
cout << (int)s1[4] << endl; //Проверяем терминатор
cout << (s1==s2) << endl; //Проверяем указатели на одну область или разные
Для того, чтобы на выделенную память скопировать строку надо использовать strcpy. Н-р
char *s1 = new char[10];
strcpy(s1, "ABCD");
Нуль-терминатор в этом случае так-же добавится автоматически.
Для того, чтобы обезопасить себя и не вылезать за границы выделенной памяти можно использовать strncpy ну или проверять длину перед копированием.

Ответ от Krab Bark[гуру]
Он уже автоматически помещен туда компилятором. Строковая константа "ABCD" неявно содержит в конце нулевой символ.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: КАК ПОМЕСТИТЬ НУЛЕВОЙ СИМВОЛ В КОНЕЦ СТРОКИ С++ КАК char* str1 = new char [10]; str1 = "ABCD";
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*