Форум программистов, компьютерный форум CyberForum.ru

Не работает самодельная функция конкатенации:) - C++

Восстановить пароль Регистрация
 
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
06.12.2013, 22:34     Не работает самодельная функция конкатенации:) #1
Здравствуйте форумчанеПомогите советом дельным
Задание:написать функцию конкатенации строк используя массивы char.Использовать new для выделения памяти новой строке.Вот моя функция.Косяк в том,что первую строку копирует она прекрасно,а вот вторую никак.Выводит мусор.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "stdafx.h"
#include "iostream"
#include "string.h"
#include "string"
 
 
using namespace std;
 
void cat(char*,char*);
 
int _tmain(int argc, _TCHAR* argv[])
{
    char str1[]="Hello,";  
    char str2[]="Mike";
    cat(str1,str2);
     cout<<"\n";
    system("pause");
    return 0;
}
 
void cat(char* str1, char* str2)
{
  int i=0,j=0;
  char* con_string = new char[strlen(str1)+strlen(str2)+1]; //выделели память на две строки + 1 для терминального нуля
  for(i=0;i<strlen(str1);i++)       //записываем 1 строку
  {
    con_string[i]=str1[i];
  }
  for(;i<strlen(str2);i++)        //записываем 2 строку.
  {
    con_string[i]=str2[i];
  }
 
  cout<<con_string;  //и тут вот какашка
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 22:34     Не работает самодельная функция конкатенации:)
Посмотрите здесь:

C++ Функция конкатенации двух строк
C++ не работает функция!
Не работает функция! C++
C++ Способы конкатенации переменных строкового типа и Char
C++ Собственная реализация функции конкатенации
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
06.12.2013, 22:49     Не работает самодельная функция конкатенации:) #2
Во-первых
Цитата Сообщение от mr_Eugene Посмотреть сообщение
for(;i<strlen(str2);i++) * * * *//записываем 2 строку.
* {
* * con_string[i]=str2[i];
* }
Во-вторых после всех копирований в конец массива нужно записывать нулевой символ.

Добавлено через 1 минуту
И удалять выделенную память после работы не забывайте
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 22:52     Не работает самодельная функция конкатенации:) #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void cat(char* str1, char* str2)
{
  int i=0,j=0;
  char* con_string = new char[strlen(str1)+strlen(str2)+1]; //выделели память на две строки + 1 для терминального нуля
  for(i=0;i<strlen(str1);i++)       //записываем 1 строку
  {
    con_string[i]=str1[i];
  }
  for( ; j < strlen(str2); i++, j++)        //записываем 2 строку.
  {
    con_string[i]=str2[j];
  }
  con_string[i] = '\0';
  cout<<con_string;  
 
}
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
06.12.2013, 23:10  [ТС]     Не работает самодельная функция конкатенации:) #4
спасибо большое!)
Yandex
Объявления
06.12.2013, 23:10     Не работает самодельная функция конкатенации:)
Ответ Создать тему
Опции темы

Текущее время: 06:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru