powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Размер массива char больше чем должен быть
5 сообщений из 5, страница 1 из 1
Размер массива char больше чем должен быть
    #38018453
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Вот такой код есть:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
char new_string[100];
cout<<"Введите строку\n";
cin>>new_string;
int start_char = 0;
int end_char = 0;
cout<<"Введите номер символа, с которого обрезать введеную строку\n";
cin>>start_char;
cout<<"Введите номер символа, до которого обрезать введеную строку\n";
cin>>end_char;
for (int i=start_char;i<=end_char;i++)
	cout<<new_string[i-1];
char *dest = new char[end_char-start_char];
strncpy(dest,new_string+start_char-1,end_char-start_char);
strcat(dest,"\0");
cout<<dest;


вот после этой строчки
Код: plaintext
1.
char *dest = new char[end_char-start_char];


strlen(dest) возвращает 16, хотя start_char==2, end_char==4. По идее должно возвращать размер 2
ну из-за того, что strlen(dest)==16, вот здесь
Код: plaintext
1.
cout<<dest;


получаю дофига лишних символов.
Заранее благодарю за помощь!
...
Рейтинг: 0 / 0
Размер массива char больше чем должен быть
    #38018529
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
strlen работатет до terminating null-character'а.
strcat работатет от terminating null-character'а.
В dest'е после new у Вас мусор в котором где-то этот terminating null-character. memset сразу опосля new спасет отца русской демократии...
...
Рейтинг: 0 / 0
Размер массива char больше чем должен быть
    #38018629
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximuS_G[/src]
strlen(dest) возвращает 16, хотя start_char==2, end_char==4. По идее должно возвращать размер 2
ну из-за того, что strlen(dest)==16, вот здесь


strlen() считает длину строки, на которую указывает указатель. У тебя указатель есть, но строки там нет.
К тому же ты возможно выделяеш мало памяти под строку -- не учитываеш оконечный '\0', на него тоже нужно выделять память.
...
Рейтинг: 0 / 0
Размер массива char больше чем должен быть
    #38018667
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivК тому же ты возможно выделяеш мало памяти под строку
BTW - да
MaximuS_Gstart_char==2, end_char==4. По идее должно возвращать размер 2

для цикла
MaximuS_G
Код: plaintext
1.
for (int i=start_char;i<=end_char;i++)



это будет 3 (три) символа...
Ну и MasterZivне учитываеш оконечный '\0', на него тоже нужно выделять память.
итого
Код: plaintext
1.
char *dest = new char[end_char-start_char + 1 + 1];
...
Рейтинг: 0 / 0
Размер массива char больше чем должен быть
    #38018883
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался! :)
Ex_Soft , MasterZiv удачи!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Размер массива char больше чем должен быть
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]