powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тупость
3 сообщений из 3, страница 1 из 1
Тупость
    #33640054
dimadv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему когда я создаю массив размером 3+3 получается 10???
Объясните пожалуста, может я считать разучился.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
char *copy(char *s1,char *s2)
{
 int i;
 char *s;
 int n1,n2;
 n1=strlen(s1);
 n2=strlen(s2);
 cout<<n1<<","<<n2<<endl; [color=blue]// 3,3[/color]
 s=new char[n1+n2];
 cout<<strlen(s)<<endl; [color=blue]// 10[/color]
 for (i= 0 ;i<n1;i++) s[i]=s1[i];
 for (i= 0 ;i<n2;i++) s[i+n1]=s2[i];
 return s;
}
...
Рейтинг: 0 / 0
Тупость
    #33640063
ChameLe0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.
Код: plaintext
1.
2.
 s=new char[n1+n2];
Должно выглядеть так:
 s=new char[n1+n2+ 1 ];

2.
Код: plaintext
1.
2.
3.
4.
5.
6.
cout<<strlen(s)<<endl; [color=blue]// 10[/color]
for (i= 0 ;i<n1;i++) s[i]=s1[i];
for (i= 0 ;i<n2;i++) s[i+n1]=s2[i];
Либо ставишь здесь s[n1+n2] =  0 ;
Либо всесто циклов используешь:
strcpy(s,s1);
strcat(s,s2);

И только после этого смотришь длину строки.
...
Рейтинг: 0 / 0
Тупость
    #33640224
dimadv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо полегчало.
Только при выводе, на экран выводится этот последний нулевой символ.
Как бы его убрать?.
Код: plaintext
1.
2.
3.
4.
5.
//s1="111", s2="222";
 s=new char[n1+n2+ 1 ];
 for (i= 0 ;i<n1;i++) s[i]=s1[i];
 for (i= 0 ;i<n2;i++) s[i+n1]=s2[i];
 s[n1+n2+ 1 ]= 0 ;
 cout<<s<<endl;// 111222 =
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тупость
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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